用SqlCommandBuilder 實現批次更新

來源:互聯網
上載者:User
  (一) 有沒有人遇到這種情況,用 SqlDataAdapter.Update(ds)更新時出錯?
answer: 一般是這樣的,如果用設計器將SqlDataAdapter拖到頁面中使用時,不會出現這種情況,因為系統會自動產生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,就是這句,要確認是哪個表,除非是很大的資料量,一般是感覺不到的),效率有些慢。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.