locked
为什么更新不进去,调试时也没错误 RRS feed

  • 问题

  • 我用的是access的数据库,更新的时候就是更新不进去,调试的时候也没有错误郁闷,帮忙看一下

    public void Update(jm.Model.User model)
      {
      StringBuilder strSql = new StringBuilder();
      strSql.Append("update [User] set ");
      strSql.Append("[UserName]=@UserName,");
      strSql.Append("[PassWord]=@PassWord,");
      strSql.Append("[UserGroupID]=@UserGroupID,");
      strSql.Append("[LastIp]=@LastIp,");
      strSql.Append("[IsUse]=@IsUse,");
      strSql.Append("[CreateUserId]=@CreateUserId,");
      strSql.Append("[LockFlag]=@LockFlag,");
      strSql.Append("[LockReason]=@LockReason");
      strSql.Append(" where [UserID]=@UserID ");
      OleDbParameter[] parameters = {
    new OleDbParameter("@UserID", OleDbType.Integer,4),
    new OleDbParameter("@UserName", OleDbType.VarChar,50),
    new OleDbParameter("@PassWord", OleDbType.VarChar,50),
    new OleDbParameter("@UserGroupID", OleDbType.Integer,4),
    new OleDbParameter("@LastIp", OleDbType.VarChar,50),
    new OleDbParameter("@IsUse", OleDbType.Integer,1),
    new OleDbParameter("@CreateUserId", OleDbType.Integer,4),
    new OleDbParameter("@LockFlag", OleDbType.Integer,1),
    new OleDbParameter("@LockReason", OleDbType.VarChar,50)};
      parameters[0].Value = model.UserID;
      parameters[1].Value = model.UserName;
      parameters[2].Value = model.PassWord;
      parameters[3].Value = model.UserGroupID;
      parameters[4].Value = model.LastIp;
      parameters[5].Value = model.IsUse;
      parameters[6].Value = model.CreateUserId;
      parameters[7].Value = model.LockFlag;
      parameters[8].Value = model.LockReason;

      DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
      }


    public static int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)
      {
      using (OleDbConnection connection = new OleDbConnection(connectionString))
      {
      using (OleDbCommand cmd = new OleDbCommand())
      {
      try
      {
      PrepareCommand(cmd, connection, null, SQLString, cmdParms);
      int rows = cmd.ExecuteNonQuery();
      cmd.Parameters.Clear();
      return rows;
      }
      catch (System.Data.OleDb.OleDbException e)
      {
      throw e;
      }
      finally
      {
      cmd.Dispose();
      connection.Close();
      }
      }
      }
      }
    2010年7月22日 1:34

答案

  • Access不支持命名参数

    只认参数顺序



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已建议为答案 DK. Da 2010年7月26日 7:13
    • 已标记为答案 jianming2032 2010年7月27日 2:38
    2010年7月22日 2:35
    版主

全部回复

  • 代码没看出问题

    建议检查传入参数,userid是否存在。不存在自然更新不到。


    family as water
    2010年7月22日 1:54
  • 代码没看出问题

    建议检查传入参数,userid是否存在。不存在自然更新不到。


    family as water


    这个值我调试的时候都是有的,就是执行到最后一步int rows = cmd.ExecuteNonQuery();

    rows一直是0,更新不进不知道什么原因

    2010年7月22日 1:56
  • Access不支持命名参数

    只认参数顺序



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已建议为答案 DK. Da 2010年7月26日 7:13
    • 已标记为答案 jianming2032 2010年7月27日 2:38
    2010年7月22日 2:35
    版主