在Visual Studio中创建注册表,SQL语法出错

本文关键字:SQL 语法 出错 注册表 创建 Visual Studio | 更新日期: 2023-09-27 18:00:54

每当我运行应用程序时,我都会不断收到错误:

您的SQL语法中有一个错误;查看相应的手册在"User_Info.users"附近要使用的正确系统的MySql服务器版本其中user_name=和password=

我的代码是:

try
{
    string myConnection = "datasource=127.0.0.1;port=3306;username=root;password=welcome";
    MySqlConnection myConn = new MySqlConnection(myConnection);
    MySqlCommand SelectCommand = new MySqlCommand("select * User_Info.users where user_name=" + this.username_txt.Text + " and password=" + this.password_txt + " ;", myConn);
    MySqlDataReader myReader;
    myConn.Open();
    myReader = SelectCommand.ExecuteReader();
    int count = 0;
    while (myReader.Read())
    {
        count = count + 1;
    }
    if (count == 1)
    {
        MessageBox.Show("Username and password is correct");
    }
    else if (count > 1)
    {
        MessageBox.Show("Duplciate Username and password, access is denied");
    }
    else
        MessageBox.Show("Username and password is incorrect, please try again");
    myConn.Close();
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

导致此错误的原因是什么?

在Visual Studio中创建注册表,SQL语法出错

这可能是因为您的用户名和密码字符串周围没有单引号。

因此,如果您的c#语法正确,您的字符串连接可能是:

"select * User_Info.users where user_name='" + this.username_txt.Text + "' and password='" + this.password_txt + "';"

将SQL代码嵌入应用程序时,通常先在数据库中直接运行示例查询,然后将该工作查询转换为应用程序代码会有所帮助。然后,您应该能够调试以突出显示两者之间的任何差异。

此外,如果不使用参数,而只是简单地连接字符串和用户输入(无论是否经过净化(,您将面临SQL注入攻击。重构代码以使用参数再怎么强调也不为过。这样做还将消除在查询中提供这些字符串分隔符的需要。

可能您的字符串是空的,或者您需要在选择中转义单词"name"answers"user",因为这些是保留的SQL关键字。对于mysql,默认的转义字符是

`

SQL标准转义符是

"

所以请更改以下行

"select * User_Info.users where user_name="

"select * `User_Info`.`users` where `user_name`="

并且您的查询应该可以正常工作。