0

ASP.NET アプリケーションの SQL クエリの 1 つで奇妙なエラーが発生します。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例外が発生するのは本当に奇妙です。

誰でも私を助けることができます

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

OleDbMsAccess への接続に使用していると思います。

パラメータ宣言を から このように変更してみて@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 に答える