以下是示例代码: 其他所有工作但仍然会出现语法更新错误? SQL已检查并在外部作为SQL查询工作。
public bool changes()
{
OleDbConnection myConnection = GetConnection();
string myQuery = "UPDATE Login SET Pass='" + textBox1.Text + "' WHERE User='" + textBox2.Text + "'";
OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection);
try
{
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
return true;
}
答案 0 :(得分:2)
好吧,因为你的WHERE
部分如下所示。 User
是MS Access中的reserve word,因此需要使用[]
进行转义,例如
WHERE [User]='" + textBox2.Text + "'"
此外,您当前的方法容易受到SQL注入攻击。而是使用另一个答案中建议的参数化查询。
答案 1 :(得分:1)
使用参数而不是连接字符串中的值:
https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters(v=vs.110).aspx
以下是使用使用语句的代码示例(正如其他人推荐的那样,以便正确处理资源):
using (OleDbConnection conn = new OleDbConnection(ConnString))
{
using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("FirstName", txtFirstName.Text);
cmd.Parameters.AddWithValue("LastName", txtLastName.Text);
conn.Open();
cmd.ExecuteNonQuery();
}
}