91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SqlCommandBuilder實現批量更新的方法

發布時間:2021-02-04 11:01:32 來源:億速云 閱讀:192 作者:小新 欄目:開發技術

這篇文章主要介紹了SqlCommandBuilder實現批量更新的方法,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一般是這樣的,如果用設計器將SqlDataAdapter拖到頁面中使用時,不會出現SqlDataAdapter.Update(ds)更新時出錯情況,因為系統會自動生成SqlDataAdapter的屬性命令,比如: .UpdateCommane insertCommand selectCommand等。  但是有些程序員不喜歡用設計器,或者是有些地方沒必要拖動SqlDataAdapter這么個龐大物來實現,那么SqlDataAdapter就不會自動生成相關的查詢或更新語句了。 所以當執行到SqlDataAdapter.Update(ds)語句時,SqlDataAdapter橋接器不知道更新哪個表不報錯了。
解決方法:用SqlCommandBuilder 實現批量更新
1.功能:
可以實現你對DataSet在UI層做任意操作后,直接丟給這個方法,這個方法就可以自動把你的修改更 新到數 據庫中,而沒必要每次都更新到數據庫
2.使用方法

 public int UpdateByDataSet(DataSet ds,string strTblName,string strConnection)
 {
  try
 {
  SqlConnection conn = new SqlConnection(strConnection));
  SqlDataAdapter myAdapter = new SqlDataAdapter();
  SqlCommand myCommand = new SqlCommand("select * from "+strTblName),(SqlConnection)this.conn);  
  myAdapter.SelectCommand = myCommand;
  SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);  
  myAdapter.Update(ds,strTblName); 
  return 0;
}
catch(BusinessException errBU)
{ 
  throw errBU;
} 
catch(Exception err)
{ 
  throw new BusinessException(err);
}
}

直接調用這個方法就可以啦,說明的一點是select * from "+strTblName是一定要的,作用大家也應該想到了,主要是告訴SqlDataAdapter更新哪個表。
3.什么時候用?
    a. 有時候需要緩存的時候,比如說在一個商品選擇界面,選擇好商品,并且進行編輯/刪除/更新后,
       最后一并交給數據庫,而不是每一步操作都訪問數據庫,因為客戶選擇商品可能進行n次編輯/刪除
       更新操作,如果每次都提交,不但容易引起數據庫沖突,引發錯誤,而且當數據量很大時在用戶執行
       效率上也變得有些慢
    b.有的界面是這樣的有的界面是這樣的,需求要求一定用緩存實現,確認之前的操作不提交到庫,點擊
      頁面專門提交的按鈕時才提交商品選擇信息和商品的其它信息. 我經常遇到這樣的情況
    c.有些情況下只往數據庫里更新,不讀取. 也就是說沒有從數據庫里讀,SqlDataAdapter也就不知道是
      更新哪張表了,調用Update就很可能出錯了。這樣的情況下可以用SqlCommandBuilder 了.
4.注意點:
   1).只能更新一個表,不能更新兩個或兩個以上相關聯的表
   2).表中必須有主鍵
   3).更新的表中字段不能有image類型的
5.優點:
    節省代碼量,節省時間,這個方法可以代替所有的:  更新/刪除/插入操作語句
6.缺點:
    訪問兩次數據庫(select * TableName,就是這句,要確認是哪個表,除非是很大的數據量, 一般是感覺不到的),效率有些慢。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“SqlCommandBuilder實現批量更新的方法”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建德市| 色达县| 彭泽县| 增城市| 英吉沙县| 鲁山县| 衡南县| 讷河市| 黄骅市| 留坝县| 连州市| 靖州| 高唐县| 林西县| 仁化县| 虎林市| 新乡市| 新龙县| 宁武县| 阜阳市| 津市市| 白水县| 玛纳斯县| 凌海市| 镇江市| 如东县| 沙洋县| 湖口县| 建昌县| 兴和县| 鄂托克旗| 固安县| 乌鲁木齐县| 成武县| 浑源县| 宽甸| 五华县| 扎鲁特旗| 息烽县| 界首市| 丁青县|