记录Access数据库更新操作大坑一个

Posted David Huang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录Access数据库更新操作大坑一个相关的知识,希望对你有一定的参考价值。

  对于更新Access数据库的操作,必须保持参数数组与sql语句中参数顺序一致,如下:

 1  public bool Update(MyModel model)
 2         {
 3             StringBuilder strSql = new StringBuilder();
 4             strSql.Append("update table1 set ");
 5             strSql.Append(" column1 = @column1 , ");
 6             strSql.Append(" column2 = @column2, ");
 7             strSql.Append(" where [email protected] ");
 8 
 9             OleDbParameter[] parameters =
10                 {
11                     // 必须要这个顺序 ヾ(。 ̄□ ̄)?゜゜゜
12                     new OleDbParameter("@column1", OleDbType.Integer, 4),
13                     new OleDbParameter("@column2", OleDbType.Integer, 4),
14                     new OleDbParameter("@ID", OleDbType.Integer, 4)
15                 };
16 
17             parameters[0].Value = model.column1;
18             parameters[1].Value = model.column1;
19             parameters[2].Value = model.ID;
20 
21             int rows = DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
22             if (rows > 0)
23             {
24                 return true;
25             }
26             else
27             {
28                 return false;
29             }
30         }

  如果改成下面这样,顺序不一致了,就妥妥的更新失败,还不报任何异常。。。。

 1         public bool Update(MyModel model)
 2         {
 3             StringBuilder strSql = new StringBuilder();
 4             strSql.Append("update table1 set ");
 5             strSql.Append(" column1 = @column1 , ");
 6             strSql.Append(" column2 = @column2, ");
 7             strSql.Append(" where [email protected] ");
 8 
 9             OleDbParameter[] parameters =
10                 {
11                     // 顺序与sql语句不一致了 ヾ(。 ̄□ ̄)?゜゜゜
12                     new OleDbParameter("@ID", OleDbType.Integer, 4),
13                     new OleDbParameter("@column1", OleDbType.Integer, 4),
14                     new OleDbParameter("@column2", OleDbType.Integer, 4)
15                 };
16 
17             parameters[0].Value = model.ID;
18             parameters[1].Value = model.column1;
19             parameters[2].Value = model.column1;
20 
21             int rows = DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
22             if (rows > 0)
23             {
24                 return true;
25             }
26             else
27             {
28                 return false;
29             }
30         }

 

以上是关于记录Access数据库更新操作大坑一个的主要内容,如果未能解决你的问题,请参考以下文章

宏中的 Access 2010 SQL 错误

反映在 MS ACCESS 2013 中进行记录更新的 Windows 用户 ID 和时间

大坑记录 - shell脚本删除操作

Excel 数据到 Access DB - 获取:操作必须使用可更新查询错误

代码库

需要在同一个Access表中创建一条记录的副本,然后更新数据