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

时间:2013-02-18 05:29:50

标签: c# asp.net sql ms-access sql-update

我在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);
}

据我所知,我能看到的是更新查询没有问题,因为我很长一段时间都在使用这种方法,但是,我得到一个{{ 1}}例外。

任何人都可以帮助我

2 个答案:

答案 0 :(得分:2)

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

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

如果正确的话,请休息:)

参考list of reserve keywords in MS Access 2007 Database

提示:始终建议使用non-reserved关键字,即使您这样做,也要始终包含[ ]以保证更安全。因为匆忙你没有意识到你搞砸了哪个保留关键词

答案 1 :(得分:-1)

我认为您正在使用OleDb连接到Ms Access。尝试将参数声明从@parameter更改为此?

更多:OleDbParameter Class

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);
}