更新查询中的语法不正确:找不到

本文关键字:不正确 找不到 语法 查询 更新 | 更新日期: 2023-09-27 18:00:06

我在ASP.NET应用程序中的一个SQL查询中遇到一个奇怪的错误。我正在尝试更新MS Access表行,下面是我的代码:

try
{
strQry = @"Update UserMaster set Password=@Pwd, RoleID=@RoleID where UserID=@UserID";
cmd.Parameters.AddWithValue("@Pwd", strUserPwd);
cmd.Parameters.AddWithValue("@RoleID", intRoleID);
cmd.Parameters.AddWithValue("@UserID", intUserID);
cmd.Connection = con;
cmd.CommandText = strQry;
con.Open();
intReturn = cmd.ExecuteNonQuery();
con.Close();
}
catch(Exception ex)
{
    throw new Exception(ex.Message);
}

据我说,我能看到的是更新查询没有问题,因为我已经使用这种方法很长时间了,但我得到了Syntax error in UPDATE statement异常,这真的很奇怪。

有人能帮我解决吗

更新查询中的语法不正确:找不到

实际上password是保留字,您需要将其括在括号[]
所以您的查询将变成

strQry = @"Update UserMaster set [Password]=@Pwd, RoleID=@RoleID where UserID=@UserID";

如果正确,请全部休息:)

参考MS Access 2007数据库中的保留关键字列表

TIP:建议始终使用non-reserved关键字,即使您这样做了,也要始终包含[ ]以确保安全。在匆忙中,你没有意识到你用弄乱了哪个保留关键字

我认为您正在使用OleDb连接到MsAccess。

尝试像这样将参数声明从@parameter更改为?

更多:OleDbParameter类

try
{
  strQry = @"Update UserMaster set Password=?, RoleID=? where UserID=?";
  var p1 = command.CreateParameter();
  p1.Value = strUserPwd;
  command.Parameters.Add(p1);
  var p2 = command.CreateParameter();
  p2.Value = intRoleID;
  command.Parameters.Add(p2);
  var p3 = command.CreateParameter();
  p3.Value = intUserID;
  command.Parameters.Add(p3);
  cmd.Connection = con;
  cmd.CommandText = strQry;
  con.Open();
  intReturn = cmd.ExecuteNonQuery();
  con.Close();
}
catch(Exception ex)
{
    throw new Exception(ex.Message);
}