国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SqlCommandBuilder如何實現批量更新

2024-08-31 00:45:42
字體:
來源:轉載
供稿:網友

一般是這樣的,如果用設計器將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類型的

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伽师县| 梅河口市| 杂多县| 江安县| 翁源县| 东明县| 蓬莱市| 普定县| 平原县| 阜平县| 新干县| 嵊州市| 竹山县| 南充市| 新昌县| 盐城市| 南平市| 龙江县| 襄汾县| 遵义市| 开平市| 微博| 玛曲县| 北流市| 临武县| 葫芦岛市| 绍兴市| 淳安县| 安远县| 道真| 建湖县| 望都县| 子长县| 东宁县| 河间市| 东乡族自治县| 乳山市| 三河市| 青浦区| 安阳县| 革吉县|