關於DataSet事務處理以及SqlDataAdapter四種用法

来源:http://www.cnblogs.com/shouce/archive/2016/03/14/5274475.html
-Advertisement-
Play Games

如果是直接執行SQL語句時,事務很好處理,對於大多數的Erp應用,不能能用SQL來處理數據,所以更新DataSet更為常用,更新單個的DataSet也非常簡單,不需要事務的處理,給多個DataSet增加事務多數應用於分散式的程式代碼中,下麵為在Webservice中更新Winform傳遞過來的經過壓


如果是直接執行SQL語句時,事務很好處理,對於大多數的Erp應用,不能能用SQL來處理數據,所以更新DataSet更為常用,更新單個的DataSet也非常簡單,不需要事務的處理,給多個DataSet增加事務多數應用於分散式的程式代碼中,下麵為在Webservice中更新Winform傳遞過來的經過壓縮的數據集的事務處理代碼,多個DataSet 情況。

  /// <summary>     /// 更新經過壓縮的DataSet     /// </summary>     /// <param >環境變數</param>     /// <param >二進位的DataSet</param>     /// <returns>出現異常,返回一個錯誤信息</returns>           public object UpdataSet(object[] env, byte[] byt)     {         object info = null;         SqlConnection sqlconn = null;         //定義事務         SqlTransaction transaction = null;         DataSet ds = null;         try         {             ds = md.BytesToDs(byt);             string Url = "資料庫連接語名";             sqlconn = new SqlConnection(Url);             sqlconn.Open();             transaction = sqlconn.BeginTransaction(IsolationLevel.ReadCommitted, "transname");//實例化事務             SqlDataAdapter adapter;             SqlCommandBuilder objCommandBuilder;             for (int i = 0; i < ds.Tables.Count; i++)             {                 adapter = new SqlDataAdapter("select * from " + ds.Tables[i].TableName + " where 2>3", sqlconn);//傳統用法                 objCommandBuilder = new SqlCommandBuilder(adapter);                 //開始掛起                 //掛起操作                 adapter.DeleteCommand = new SqlCommand("...刪除語句..", sqlconn, transaction);                 //adapter的增刪查改可以與事務一起用,註意這裡沒有實例SqlCommand對象所以new SqlCommand                 adapter.InsertCommand = new SqlCommand("............", sqlconn, transaction);                 adapter.UpdateCommand = new SqlCommand(".............", sqlconn, transaction);                 adapter.SelectCommand = new SqlCommand("select * from " + ds.Tables[i].TableName + " where 2>3", sqlconn, transaction);                 //以上是adapter的新用法,new SqlCommand後面寫sql語句,SqlConnection,還可以寫事務...就不用實例SqlCommand對象                   //沒有實例SqlCommand對象所以獲取                 adapter.DeleteCommand = objCommandBuilder.GetDeleteCommand();                 adapter.InsertCommand = objCommandBuilder.GetInsertCommand();                 adapter.UpdateCommand = objCommandBuilder.GetUpdateCommand();                   objCommandBuilder.DataAdapter.Update(ds, ds.Tables[i].TableName.ToString());//                              }             transaction.Commit();//無誤後提交事務             sqlconn.Close();         }         catch (Exception err)         {             Console.Out.WriteLine("存檔時發生錯誤:" + err.Message);             info = "存檔時發生錯誤:" + err.Message;             //事務回滾             transaction.Rollback();         }         finally         {             if (sqlconn != null)             {                 sqlconn.Close();             }         }         return info;     }
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 從mono的官網上查,debian的步驟寫得太亂了。其實總結起來,就是這麼幾步: 1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
  • 銳捷校園網虛擬機聯網問題 2016/3/10 問題描述: 銳捷校園網下註冊過MAC地址的PC機可以正常上網,但是虛擬機vmwareworkstation使用以下3種網路連接還是不可以正常上網。 橋接模式 NAT模式 僅主機模式 問題分析: 只有在網路中心綁定過MAC地址的PC機使用銳捷客戶端獲得ip
  • ActivateKeyboardLayout 設置調用線程或當前進程為輸入區域設置標識符; System.Windows.Forms.InputLanguage.CurrentInputLanguage 獲取或設置當前線程的輸入語言 /// <summary> /// 設置調用線程或當前進程為輸入區
  • 六、Shell腳本編程詳解將上述五部分的內容,串聯起來,增加對Shell的瞭解01.shell腳本shell:##perl#python#php#jsp不同的腳本執行不同的文本,執行的角色是不一樣的;#shell scripts(UNIX Like系統的原則有一條:程式越短越好)#bash csh
  • userdel - delete a user account and related files在Linux中,userdel命令的功能是刪除系統中的用戶及相關的文件語法 userdel [選項] username參數 -r --remove:刪除用戶時,同時刪除用戶的家目錄。預設情況下,並不刪除
  • 在開發 ASP.NET 網站時,您經常需要從一個網頁重定向(導航)到另一個網頁,同時希望能夠將信息從源頁傳遞到目標頁。例如,如果您正在開發一個保險網站,用一個頁面來收集基本信息(用戶信息、保險產品信息等),用另一個頁面用來完成支付過程,而支付頁面又需要前一頁面的部分信息,這時就需要進行頁面重定向和傳
  • 要理解async和await的用法,首先要瞭解Task相關知識,這裡不做說明,因為這不是本文的重點。 如果你已經對Task很瞭解,那麼如何使用async和await,在此主要總結了以下三點:   對於第三點說的有點繞,所以下麵結合代碼說一下:   執行結果:   對結果解釋是: Main方法調用具有
  • 效果圖 直接附帶code http://files.cnblogs.com/52net/MultiSelectDropDownEx.zip
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...