使用OLEDB的SQL更新语句错误

本文关键字:语句 错误 更新 SQL OLEDB 使用 | 更新日期: 2023-09-27 18:03:39

错误提示为" UPDATE语句语法错误"

string id = lblUserID.Text;
DB_Connection.con.Open();
string sql = "UPDATE TblUser SET LastName = @LastName,FirstName = @FirstName,MI = @MI,UserLevel = @UserLevel,Username = @Username,Password = @Password WHERE UserID = '" + id + "'";
DB_Connection.command = new OleDbCommand(sql, DB_Connection.con);
DB_Connection.command.Parameters.AddWithValue("@LastName", txtLastName.Text);
DB_Connection.command.Parameters.AddWithValue("@FirstName", txtFirstName.Text);
DB_Connection.command.Parameters.AddWithValue("@MI", txtMI.Text);
DB_Connection.command.Parameters.AddWithValue("@UserLevel", cmbUserLevel.Text);
DB_Connection.command.Parameters.AddWithValue("@Username", txtUsername.Text);
DB_Connection.command.Parameters.AddWithValue("@Password", txtPassword.Text);
DB_Connection.command.ExecuteNonQuery();
DB_Connection.con.Close();

使用OLEDB的SQL更新语句错误

很可能UserID是表中的一个数字,但是您将值包围的撇号意味着您正在尝试将字符串文字分配给数字列。

参数化用户id:

string sql = "UPDATE TblUser SET ..... WHERE UserID = @UserId";
...
var userId = int.Parse(lblUserID.Text);  // will throw exception if not a number
DB_Connection.command.Parameters.AddWithValue("@UserId", userId);
...
...

无关,但另一个观察。考虑使用using语句,并根据需要在本地创建连接和命令,而不是使用DB_Connection的任何类级结构。

using语句将关闭连接,因此您不必显式调用Close()(顺便说一句,如果在您的方法中抛出异常,则不会运行)。

查询语法错误。显然,原因如下:

  1. 可能是您使用单引号的userID。假设userID在数据库中是整数,那么您必须删除单引号。

  2. 另一种可能性,可能是您缺少在数据库表列名周围添加括号。

的例子:

[Password] = @Password 

请参阅这个链接来理解为什么方括号很有用,尽管不是强制性的。

下面是Microsoft OLE DB Provider的保留字列表