OleDbConnection UPDATE 语法错误,SQL 有效但不会更新数据库

OleDbConnection UPDATE Syntax Error, SQL work but won't update DataBase

示例代码如下: 其他一切正常但不断出现语法更新错误? 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;
    }

使用参数而不是连接字符串中的值:

https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters(v=vs.110).aspx

这是一个代码示例,其中包含 using 语句(正如其他人推荐的那样,用于正确处理资源):

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

嗯,这是因为您的 WHERE 部分,如下所示。 User 是 MS Access 中的 reserve word,因此需要使用 [] 转义,例如

WHERE [User]='" + textBox2.Text + "'"

此外,您当前的方法容易受到 SQL 注入的攻击。而是按照另一个答案中的建议使用参数化查询。