关于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的情况。