OleDbConnection UPDATE语法错误,SQL工作但不会更新DataBase

时间:2016-11-21 15:40:27

标签: c# syntax-error oledb oledbconnection

以下是示例代码: 其他所有工作但仍然会出现语法更新错误? 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;
    }

2 个答案:

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