0

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

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异常真的很奇怪。

谁能帮我吗

4

2 回答 2

2

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

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

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

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

提示:总是建议使用non-reserved关键词,即使你这样做了,也总是包括[ ]更安全的一面。匆忙中你没有意识到你搞砸了哪个保留关键词

于 2013-02-18T05:36:49.447 回答
-1

我认为您正在使用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);
}
于 2013-02-18T05:36:07.387 回答