我正在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)中的代码几乎相同
答案 0 :(得分:0)
从'
的侧面删除'@email'
,因为addwith值会在必要时将其添加:
string query = "select * from users where email = @email"
顺便说一句,最好使用Parameters.Add()
而不是Parameters.AddWithValue()
:
command.Parameters.Add("@email", SqlDbType.VarChar).Value = email;