UPDATE语句中的语法错误C#中的OleDb异常

Bon*_*Bon 0 c# oledb winforms

我已经仔细检查了我的SQL语句,似乎我的SQL语句是错误的.我不知道为什么它不起作用.我的SQL语句是正确的,这导致了这个OleDBException.

这是代码

public void updateAccount(Int32 accountid, String username, String password, String isdisable)
{
     con.ConnectionString = db.konek();
     String sql = "UPDATE accounts SET username = @username, password = @password, isdisable = @isdisable WHERE accountid = @accountid";
     try
     {
         con.Open();
         OleDbCommand cmd = new OleDbCommand(sql, con);
         cmd.Parameters.AddWithValue("@username", username);
         cmd.Parameters.AddWithValue("@password", password);
         cmd.Parameters.AddWithValue("@isdisable", isdisable);
         cmd.Parameters.AddWithValue("@accountid", accountid);
         cmd.ExecuteNonQuery();
     }
     finally
     {
         con.Close();
     }
}
Run Code Online (Sandbox Code Playgroud)

我的MS Access Table的屏幕截图 在此输入图像描述

例外截图 在此输入图像描述

Ste*_*eve 5

您使用的是MICROSOFT JET保留字 PASSWORD.
这是语法错误的起源.

你应该用方括号封装你的sql命令

 String sql = "UPDATE accounts SET username = @username, [password] = @password, "  + 
              "isdisable = @isdisable WHERE accountid = @accountid";
Run Code Online (Sandbox Code Playgroud)

并为命名参数问题.
就Microsoft Access而言,提供程序Microsoft.ACE.OLEDB.12.0允许您使用与SqlServer兼容的上述语法.但是,在OleDbCommand的OleDbParameter集合中插入参数时,您应该遵守参数占位符的正确顺序