c# - 在 C# 和 Mysql 中使用预处理语句

标签 c# mysql prepared-statement

我在我的程序中尝试了准备好的语句,但没有用。

注释的部分是Prepared Statement部分。当我将其更改为正常语句时,一切正常。

谁能告诉我我错过了什么?

非常感谢。

private void btnLogin_Click(object sender, EventArgs e)
{
    MySqlCommand cmd = MySqlConn.cmd;
    //cmd = new MySqlCommand("SELECT * FROM admin WHERE admin_username='@val1' AND admin_password=PASSWORD('@val2')", MySqlConn.conn);
    //cmd.Prepare();
    //cmd.Parameters.AddWithValue("@val1", tboxUserName.Text);
    //cmd.Parameters.AddWithValue("@val2", tboxPassword.Text);
    cmd = new MySqlCommand("SELECT * FROM admin WHERE admin_username='"+tboxUserName.Text+"' AND admin_password=PASSWORD('"+tboxPassword.Text+"')", MySqlConn.conn);

    MySqlDataReader res = cmd.ExecuteReader();
    if (!res.HasRows) { MessageBox.Show("Error! "); res.Close(); return; }
    else
    {
        //do something
    }
    res.Close();
}

最佳答案

尝试从查询中删除 ' 并在添加参数后使用 Prepare:

cmd = new MySqlCommand("SELECT * FROM admin WHERE admin_username=@val1 AND admin_password=PASSWORD(@val2)", MySqlConn.conn);
cmd.Parameters.AddWithValue("@val1", tboxUserName.Text);
cmd.Parameters.AddWithValue("@val2", tboxPassword.Text);
cmd.Prepare();

关于c# - 在 C# 和 Mysql 中使用预处理语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070434/

相关文章:

c# - 从其他 Activity 的构造函数开始 Activity ?

C# 抽象类 : Cannot implicitly convert type type1 to type2

c# - asp.net mvc 中 JavaScriptResult 的工作示例

Mysql 数据范围显示奇怪的结果

mysql - wordpress查询2组元键

php - 在数据库中保存表单

php - Mysqli准备语句每次都失败

php - 当字段名称和值包含单引号时,PDO 插入失败 (42000/1064)

c# - 使用空分配修复 'Use of unassigned local variable'。为什么?

java - 使用 sysdate 作为参数插入数据库