带有参数的.Net C#连接器/ NET查询不起作用

时间:2018-11-29 23:20:12

标签: c# mysql asp.net

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

我正在使用带有C#的Connector / NET

我有查询来通过这样声明的电子邮件来获取用户:
    Start-Process powershell -Credential $domvar'\'$id -ArgumentList '-command &{Start-Process mmc -verb Runas -ArgumentList @("C:\Windows\System32\dsa.msc" /domain=$domain)}'

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

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

select * from users where email = '@email';

当我在任何测试用例中以这种方式运行它时,属性 MySqlCommand query = new MySqlCommand(UserByEmail, db); db.Open(); query.Parameters.AddWithValue("@email", email); MySqlDataReader reader = query.ExecuteReader(); if(reader.Read()){ /* Do stuff */ } db.Close(); 总是返回false。我已将查询直接更改为:

reader.HasRows

对于他们两个来说,都有返回的行。所以问题是当我使用参数 @email - select * from users; - select * from users where email = 'test1@example.com'; 时。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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