关于Access数据库执行Update语句后,不报错,但影响行数总是返回0的问题

最近碰到一个奇怪的问题,使用Access数据库执行Update语句后,不报错,但影响行数总是返回0.

因为是第一次碰到这个问题,纠结了半天。后来在网上搜索得到解决方案:

SQL语句传参数的顺序和语句中的顺序不一致造成的。

  StringBuilder strSql = new StringBuilder();
  strSql.Append("update tb_Brand set ");
  strSql.Append("KindName=@KindName,");     // sql语句顺序
  strSql.Append("PicUrl=@PicUrl,");                  // sql语句顺序
  strSql.Append(" where Id=@Ids ");               // sql语句顺序
  OleDbParameter[] parameters = {
          new OleDbParameter("@KindName", OleDbType.VarWChar),            // 参数顺序
          new OleDbParameter("@PicUrl", OleDbType.VarWChar),                   // 参数顺序
          new OleDbParameter("@Id", OleDbType.Integer)};                          // 参数顺序
  parameters[0].Value = KindName;
  parameters[1].Value = PicUrl;
  parameters[2].Value = Id;

  return DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);

上面语句中,红色标记的顺序如果不一致,那么执行Update语句就会出现不报错,返回0的情况。

posted on 2012-08-20 17:15  zlwzlwzlw  阅读(334)  评论(0编辑  收藏  举报

导航