当前位置: 首页 > 面试题库 >

在C#和MySQL中使用预准备语句

曾嘉言
2023-03-14
问题内容

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

注释的部分是“准备报表”部分。当我将其更改为常规语句时,一切都正确。

有人可以告诉我我想念什么吗?

非常感谢。

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();


 类似资料:
  • 问题内容: 我正在尝试将SQL与Python中准备好的语句一起使用。Python对此没有自己的机制,因此我尝试直接使用SQL: 然后,在循环中: 在循环中,我得到: 这是怎么回事? 问题答案: 例如,在http://zetcode.com/db/mysqlpython/上解释了如何在Python中使用MySQL准备好的语句- 在该页面中查找。 在您的情况下,例如: 然后,将其放入循环中: 无需进一

  • 问题内容: 嗨,我需要在我的网站中使用“准备好的声明”。我尝试使用这个 但这不起作用。当我改变并以它的工作。 问题答案: CodeIgniter不支持预备语句。如果查看CI的Database类的源代码,您将看到它们仅通过用传递的数组中的数据替换问号来解析绑定: https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/

  • 我正在使用我生成的一个准备好的语句,但在Java抛出的语句上出现了语法错误。然而,当我将PS的toString复制并粘贴到数据库的phpmyadmin中时,它的执行完美无缺。有什么想法会出错吗,我很难理解? 编辑:更改为PS.ExecuteUpdate(查询);还是不起作用。

  • 问题内容: 我只是想知道是否有一种方法可以在MySQL中使用某种形式的预处理语句,这样就不必逃避所有输入,也不必将所有文件从MySQL切换到MySQLi。我真的不相信转义功能,因此,如果在常规MySQL中有任何可行的替代方法,那就太好了。 问题答案: 使用PDO(PHP数据对象)连接到MySQL数据库。此方法将确保所有数据库输入将始终被视为文本字符串,并且您将不必进行任何手动转义。 结合正确使用h

  • 我读到MySQL不支持服务器端查询计划缓存。所以如果我想使用PreparedStatements来获得性能优势,我能做的就是在JDBC连接中启用语句缓存。因此,根据文档,它将允许缓存每个连接基础上准备好的语句。 与如果MySQL有服务器端查询计划缓存相比,JDBC连接的PreparedStatement缓存的性能增益是什么?因此,如果PreparedStatement确实在物理连接的缓存中找到,这

  • 问题内容: 我有一个关于将字符串插入SQL Server 2008 R2的问题。当我尝试插入带有一些国家字母的字符串时,会收到“?” 反而。 我知道在字符串文字的开头添加将解决此问题,但是我正在使用JDBC准备的语句,如下所示: 我的问题是:如何添加此“ N”字母?我应该做这样的事情吗? 老实说,我不相信,因为这根本行不通。 问题答案: 根据@a_horse_with_no_name和@ gofr