<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ADO.NET事務處理

      一 事務處理介紹
      事務是這樣一種機制,它確保多個SQL語句被當作單個工作單
      元來處理。事務具有以下的作用:
      * 一致性:同時進行的查詢和更新彼此不會發生沖突,其他
      用戶不會看到發生了變化但尚未提交的數據。
      * 可恢復性:一旦系統故障,數據庫會自動地完全恢復未完
      成的事務。

      二 事務與一致性
      事務是完整性的單位,一個事務的執行是把數據庫從一個一
      致的狀態轉換成另一個一致的狀態。因此,如果事務孤立執行時
      是正確的,但如果多個事務并發交錯地執行,就可能相互干擾,
      造成數據庫狀態的不一致。在多用戶環境中,數據庫必須避免同
      時進行的查詢和更新發生沖突。這一點是很重要的,如果正在被
      處理的數據能夠在該處理正在運行時被另一用戶的修改所改變,
      那么該處理結果是不明確的。
      不加控制的并發存取會產生以下幾種錯誤:
      1 丟失修改(lost updates)
      當多個事務并發修改一個數據時,不加控制會得出錯誤的結
      果,一個修改會覆蓋掉另一個修改。
      2 讀的不可重復性
      當多個事務按某種時間順序存取若干數據時,如果對并發存
      取不加控制,也會產生錯誤。
      3 臟讀(DIRDY DATA),讀的不一致性
      4 光標帶來的當前值的混亂
      事務在執行過程中它在某個表上的當前查找位置是由光標表
      示的。光標指向當前正處理的記錄。當處理完該條記錄后,則指
      向下一條記錄。在多個事務并發執行時,某一事務的修改可能產
      生負作用,使與這些光標有關的事務出錯。
      5 未釋放修改造成連鎖退出
      一個事務在進行修改操作的過程中可能會發生故障,這時需
      要將已做的修改回退(Rollback)。如果在已進行過或已發現錯
      誤尚未復原之前允許其它事務讀已做過修改(臟讀),則會導致
      連鎖退出。
      6 一事務在對一表更新時,另外的事務卻修改或刪除此表的
      定義。
      數據庫會為每個事務自動地設置適當級別的鎖定。對于前面
      講述的問題:臟讀、未釋放修改造成的連鎖退出、一事務在對一
      表更新時另外的事務卻修改或刪除此表的定義,數據庫都會自動
      解決。而另外的三個問題則需要在編程過程中人為地定義事務或
      加鎖來解決。
      三 事務和恢復
      數據庫本身肩負著管理事務的責任。事務是最小的邏輯工作
      單元,在這個工作單元中,對數據庫的所有更新工作,要么必須
      全部成功,要么必須全部失?。ɑ赝耍?。只要應用程序指定了某
      段程序為一個事務并做了相應的處理(提交或回退),數據庫系
      統會自動維護事務本身的特性。

      四 ORACLE數據庫的事務定義
      ORACLE事務從COMMIT、ROLLBACK、連接到數據庫或開始第一
      條可執行的SQL語句時開始,到一條COMMIT、ROLLBACK語句或退出
      數據庫時結束。如果在一個事務中包含DDL語句,則在DDL語句的
      前后都會隱含地執行COMMIT語句,從而開始或結束一個事務。
      如果一個事務由于某些故障或者由于用戶改變主意而必須在
      提交前取消它,則數據庫被恢復到這些語句和過程執行之前的狀
      態。
      利用ROLLBACK語句可以在COMMIT命令前隨時撤消或回退一個
      事務??梢曰赝苏麄€事務,也可以會退部分事務,但是不能回退
      一個已經被提交的事務?;赝瞬糠质聞盏腞OLLBACK命令為:
      ROLLBACK to savepoint 存儲點名
      存儲點是用戶放入事務中的標記,用來表示一個可被回退的
      位置。存儲點通過在事務中放入一個SAVEPOINT命令而被插入。該
      命令的語法是:
      SAVEPOINT 存儲點名
      如果在ROLLBACK語句中沒有給出存儲點名,則整個事務被回
      退。
      五 SYBASE數據庫的事務定義
      SYBASE通過使用BEGIN TRANsaction和COMMIT TRANsaction命令指
      示SQL將任意數目的語句作為一個單元來處理。ROLLBACK TRANsaction
      命令則允許用戶恢復到事務的開始,或恢復到事務內部已經被用SAVE
      TRANsaction命令定義的存儲點上。
      BEGIN TRANsaction和COMMIT TRANsaction能夠包含任意數目的SQL
      語句和存儲過程,方法很簡單:
      BEGIN TRANsaction [事務名稱]
      COMMIT TRANsaction
      如果一個事務由于某些故障或者由于用戶改變主意而必須在提交
      前取消它,則數據庫被恢復到這些語句和過程執行之前的狀態。
      利用ROLLBACK TRANsaction命令可以在COMMIT TRANsaction命令
      前隨時回退一個事務??梢曰赝苏麄€事務,也可以回退部分事務,但
      是不能回退一個已經被提交的事務。ROLLBACK TRANsaction命令為:
      ROLLBACK TRANsaction [事務名|存儲點名]
      存儲點名是用戶放入事務中的標記,用來表示一個可以被回退的
      位置。存儲點名通過在事務中放入一個SAVE TRANsaction命令而被插
      入。該命令的句法是:
      SAVE TRANsaction 存儲點名
      如果在ROLLBACK TRANsaction中沒有給出存儲點名或事務名,則
      事務被回退到批處理中的第一個BEGIN TRANsaction語句處。
      ---------------------------------------------------------------------------------------------------------------------------------


      Ado.Net事務處理。
      在ADO.NET 中,可以使用Connection 和Transaction 對象來控制事務。若要執行事務,請執行下列操作:
      ? 調用Connection 對象的BeginTransaction 方法來標記事務的開始。
      ? 將Transaction 對象分配給要執行的Command的Transaction 屬性。
      ? 執行所需的命令。
      ? 調用Transaction 對象的Commit 方法來完成事務,或調用Rollback 方法來取消事務。
      當然ADO.NET事務處理有優點和缺點,運用起來看具體情況了。
      ? 優點:
      – 簡單性
      – 和數據據事務差不多的快
      – 獨立于數據庫,不同數據庫的專有代碼被隱藏了
      ? 缺點:
      – 事務不能跨越多個數據庫連接
      – 事務執行在數據庫連接層上,所以需要在事務過程中維護一個數據庫連接。
      下邊我們看一個例子,建立一個頁面,同樣簡單,只需要一個按鈕,然后編程:
       1using System;
       2using System.Data;
       3using System.Configuration;
       4using System.Collections;
       5using System.Web;
       6using System.Web.Security;
       7using System.Web.UI;
       8using System.Web.UI.WebControls;
       9using System.Web.UI.WebControls.WebParts;
      10using System.Web.UI.HtmlControls;
      11using System.Data.SqlClient;
      12
      13namespace WebApplication1
      14{
      15    public partial class AdoAction : System.Web.UI.Page
      16    {
      17        protected void Page_Load(object sender, EventArgs e)
      18        {
      19
      20        }

      21
      22        protected void btn_Click(object sender, EventArgs e)
      23        {
      24            SqlConnection con = new SqlConnection();
      25            con.ConnectionString=ConfigurationManager.ConnectionStrings["DSN"].ConnectionString;
      26            con.Open();
      27            //啟動一個事務。
      28            SqlTransaction myTran = con.BeginTransaction();
      29            //為事務創建一個命令,注意我們執行雙條命令,第一次執行當然成功。我們再執行一次,失敗。
      30            //第三次我們改其中一個命令,另一個不改,這時候事務會報錯,這就是事務機制。
      31            SqlCommand myCom = new SqlCommand();
      32            myCom.Connection = con;
      33            myCom.Transaction = myTran;
      34            try
      35            {
      36                myCom.CommandText = "insert into SqlAction values ('測試2','111')";
      37                myCom.ExecuteNonQuery();
      38                myCom.CommandText = "insert into SqlAction values ('測試3','111')";
      39                myCom.ExecuteNonQuery();
      40                myTran.Commit();
      41                Response.Write("成功執行");
      42
      43            }

      44            catch (Exception Ex)
      45            {
      46                myTran.Rollback();
      47                //創建并且返回異常的錯誤信息
      48                Response.Write(Ex.ToString());
      49                Response.Write("寫入數據庫失敗");
      50            }

      51            finally
      52            {
      53                con.Close();
      54            }

      55 
      56        }

      57
      58
      59    }

      60}
       

      posted @ 2010-02-27 12:05  chinaifne  閱讀(13810)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 香港日本三级亚洲三级| 色AV专区无码影音先锋| 无码成人精品区在线观看| 韩国午夜理伦三级| 少妇人妻偷人精品免费| 国产成人午夜福利院| 亚洲中文字幕精品一区二区三区| 国产亚洲一区二区三不卡| 国产日本一区二区三区久久| 高潮videossex潮喷| 不卡乱辈伦在线看中文字幕| 国产精品久久久久影院亚瑟| 激情综合色综合啪啪开心| 九九热视频在线免费观看| 岛国岛国免费v片在线观看| 樱桃视频影院在线播放| 东京热人妻丝袜无码AV一二三区观| 特黄aaaaaaa片免费视频| 夜夜夜高潮夜夜爽夜夜爰爰| 久久亚洲国产精品五月天| 久久婷婷大香萑太香蕉av人 | 精品国产乱码久久久久久影片| 成人午夜福利精品一区二区| 精品无码三级在线观看视频| 国产亚洲精品在av| 久久亚洲精品人成综合网| 国产精品青青在线观看爽香蕉| 亚洲精品日韩精品久久| 97人妻精品一区二区三区| 中文字幕无码人妻aaa片| 福利视频一区二区在线| 国产一区国产精品自拍| 草草线在成年免费视频2 | 亚洲国产午夜精品理论片在线播放 | 亚洲 成人 无码 在线观看| 白白发布视频一区二区视频| www插插插无码免费视频网站| 日韩精品一区二区三区激情视频| 美日韩不卡一区二区三区| 韩国精品一区二区三区| 伊人精品成人久久综合97|