c# - C# 和 SQL 新手 - 为什么我的 .AddWithValue 不起作用?

标签 c# mysql sql syntax

所以目前我有这个:

private void button1_Click(object sender, EventArgs e) {
   string username = txtboxUsername.Text;
   string password = txtboxPassword.Text;
   string salt = string.Empty;
   connection.Open();
   MySqlCommand sql = new MySqlCommand("SELECT salts FROM users WHERE usernames = @username;", connection);
   sql.Parameters.AddWithValue("@username", username);

        using (MySqlDataReader reader = sql.ExecuteReader()) {
            if (reader.HasRows) {
                reader.Read();
                salt = reader.GetString(0);
            } else {
                MessageBox.Show(sql.CommandText);
            }
        }
}

现在问题是,当我运行这个时,我没有收到编译器错误,但是 sql.Parameters.AddWithValue( .. );部分实际上并未将字符串“用户名”添加到 sql 查询中。它只是将其保留在@username 处。有谁知道我在这里做错了什么?

最佳答案

您忘记调用.Prepare()

MySqlCommand sql = new MySqlCommand("SELECT salts FROM users WHERE usernames = @username;", connection);
sql.Prepare(); // You forgot this *********************
sql.Parameters.AddWithValue("@username", username);

下面是一个使用 using block 使用适当资源的示例:

using (MySqlConnection lconn = new MySqlConnection(connString))
{
    lconn.Open();
    using (MySqlCommand cmd = new MySqlCommand())
    {
        cmd.Connection = lconn;
        cmd.CommandText = "update " + activeTblName + " set bn=@bn where qId=@qId";
        cmd.Prepare();
        cmd.Parameters.AddWithValue("@qId", pqId);
        cmd.Parameters.AddWithValue("@bn", ptheValue);
        cmd.ExecuteNonQuery();
    }
}

相应地调整您的资源以自动为您清理资源。 MSDN 展示了所有这些的示例。

关于c# - C# 和 SQL 新手 - 为什么我的 .AddWithValue 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38348223/

相关文章:

c# - NUnit 理论有一个异常(exception)

c# - 将结构数据数组从 C++ 编码到 C# 时出现问题

php - 如何接受 html 表单中的浮点值并将其发送到 MySQL DB

mysql - 无法对 int 字段 mysql 查询进行按位或运算

c# - 如何参数化 SQL 表而不会受到 SQL 注入(inject)的影响

c# - ios webview - 如何在应用程序未运行时检查通知

c# - 使用 XmlDocument 遍历 XML

php - MySQL 到 outfile 不能在 PHP 应用程序中工作,但可以在 mysql 中工作

MySQL : issue with GROUP BY and COUNT clauses

MySQL 排序规则操作出现 LIKE 问题