在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);
}
导致此错误的原因是什么?
这可能是因为您的用户名和密码字符串周围没有单引号。
因此,如果您的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`="
并且您的查询应该可以正常工作。