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

首頁 > 開發(fā) > 綜合 > 正文

用SqlCommandBuilder 實現(xiàn)批量更新

2024-07-21 02:22:43
字體:
供稿:網(wǎng)友
 

(一)

  有沒有人遇到這種情況,用 sqldataadapter.update(ds)更新時出錯?

  answer:   一般是這樣的,如果用設計器將sqldataadapter拖到頁面中使用時,不會出現(xiàn)這種情況,因為

                  系統(tǒng)會自動生成sqldataadapter的屬性命令,比如:  .updatecommane insertcommand

                  selectcommand等。  但是有些程序員不喜歡用設計器,或者是有些地方?jīng)]必要拖動

                  sqldataadapter這么個龐大物來實現(xiàn),那么sqldataadapter就不會自動生成相關(guān)的查詢或更新

                  語句了.   所以當執(zhí)行到sqldataadapter.update(ds)語句時,sqldataadapter橋接器不知道更

                 新哪個表.不報錯了. 

(二)

  解決方法:

  用sqlcommandbuilder 實現(xiàn)批量更新

  1.功能:

   可以實現(xiàn)你對dataset在ui層做任意操作后,直接丟給這個方法,這個方法就可以自動把你的修改更 新到數(shù) 據(jù)庫中,而沒必要每次都更新到

   數(shù)據(jù)庫

  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);
 }
}

直接調(diào)用這個方法就可以啦,說明的一點是select * from "+strtblname是一定要的,
作用大家也應該想到了,主要是告訴 sqldataadapter更新哪個表


3.什么時候用?

    a. 有時候需要緩存的時候,比如說在一個商品選擇界面,選擇好商品,并且進行編輯/刪除/更新后,

       最后一并交給數(shù)據(jù)庫,而不是每一步操作都訪問數(shù)據(jù)庫,因為客戶選擇商品可能進行n次編輯/刪除

       更新操作,如果每次都提交,不但容易引起數(shù)據(jù)庫沖突,引發(fā)錯誤,而且當數(shù)據(jù)量很大時在用戶執(zhí)行

       效率上也變得有些慢

    b.有的界面是這樣的有的界面是這樣的,需求要求一定用緩存實現(xiàn),確認之前的操作不提交到庫,點擊

      頁面專門提交的按鈕時才提交商品選擇信息和商品的其它信息. 我經(jīng)常遇到這樣的情況

    c.有些情況下只往數(shù)據(jù)庫里更新,不讀取. 也就是說沒有從數(shù)據(jù)庫里讀,sqldataadapter也就不知道是
    
      更新哪張表了,調(diào)用update就很可能出錯了。這樣的情況下可以用sqlcommandbuilder 了.
        

4.
 注意點:
  1.只能更新一個表,不能更新兩個或兩個以上相關(guān)聯(lián)的表
  2.表中必須有主鍵
  3.更新的表中字段不能有image類型的

5.優(yōu)點:

    節(jié)省代碼量,節(jié)省時間,這個方法可以代替所有的:  更新/刪除/插入操作語句

6.缺點:
        訪問兩次數(shù)據(jù)庫(select * tablename,就是這句,要確認是哪個表,除非是很大的數(shù)據(jù)量,
        一般是感覺不到的),效率有些慢



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 土默特右旗| 沅陵县| 闽侯县| 涞水县| 上杭县| 孝义市| 巴里| 乡城县| 靖江市| 封开县| 云南省| 保德县| 新邵县| 东源县| 万源市| 景洪市| 宜良县| 衡山县| 项城市| 孝昌县| 通辽市| 来凤县| 鹤岗市| 徐州市| 新乡县| 呼图壁县| 彭州市| 遵义县| 荃湾区| 吉安市| 墨竹工卡县| 凉山| 厦门市| 阿城市| 贵港市| 茌平县| 勐海县| 嵊泗县| 甘德县| 大石桥市| 遵化市|