更新查询中的语法不正确:找不到
本文关键字:不正确 找不到 语法 查询 更新 | 更新日期: 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);
}