記錄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 ID=@ID ");
 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 ID=@ID ");
 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         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM