c# - .Net C# 连接器/NET 查询参数不起作用

标签 c# mysql asp.net

我正在 asp.net 中登录。从数据库中获取用户的查询总是返回一个空集,即使应该返回一行也是如此。

我在 C# 中使用 Connector/NET

我有通过这样声明的电子邮件获取用户的查询:
select * from users where email = '@email';

在数据库中我有两行:test1@example.com 和 test2@example.com

我的代码如下所示: UserByEmail 是一个带有上述查询的字符串。

    MySqlCommand query = new MySqlCommand(UserByEmail, db);
    db.Open();
    query.Parameters.AddWithValue("@email", email);
    MySqlDataReader reader = query.ExecuteReader();
    if(reader.Read()){
       /* Do stuff */
    }
    db.Close();

当我像这样对任何测试用例运行它时,属性 reader.HasRows 总是返回 false。我已将查询直接更改为:

- select * from users;
- select * from users where email = 'test1@example.com';

对于他们两个,都有后面的行。所以问题是当我使用参数 @emailquery.Parameters.AddWithValue("@email", email); 时。

知道这里发生了什么吗?我一直在寻找这个问题,但一无所获。该代码与文档示例中的代码几乎相同 ( Connector/NET Tutorials: Parameters )

最佳答案

'@email' 的两侧删除 ',因为 addwith 值会在必要时添加它:

string query = "select * from users where email = @email"

顺便说一下,最好使用Parameters.Add(),而不是Parameters.AddWithValue():

command.Parameters.Add("@email", SqlDbType.VarChar).Value = email;

关于c# - .Net C# 连接器/NET 查询参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53549033/

相关文章:

mysql - Ruby/Rails 使用 MySQL 中的计算列对范围内的对象进行计数

c# - 定标器变量问题

c# - 为什么我不能在 ASP.NET 中使用 LINQ?

javascript - Twitter Bootstrap 工具提示 : flickers on mouse down

c# - .Net 中的 Oracle 连接池

c# - 是否可以更改 MEF 创建导入对象的方式?

mysql - 'posts' 和 'postmeta' WordPress 表的嵌套连接查询

php 准备语句 SQLSTATE[42000] : Syntax error or access violation: 1064

c# - 在 Console.WriteLine 中传递值

c# - 使用 op_Addition 创建自定义类