【问题标题】:.Net C# Connector/NET Query with parameters not working.Net C# 连接器/NET 查询参数不起作用
【发布时间】:2018-11-29 23:20:12
【问题描述】:

我正在登录 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

【问题讨论】:

    标签: c# mysql asp.net


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢。我已经为此浪费了几个小时,这是报价。我将使用您推荐的方式添加参数。
    猜你喜欢
    • 1970-01-01
    • 2013-04-22
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多