返回首頁
當前位置: 主頁 > 網絡編程 > .Net實例教程 >

C#中事務的應用實例及實現代碼

時間:2013-08-23 00:40來源:知行網www.f1globe.com 編輯:麥田守望者

在C#程序設計中我們通常在try語句塊中進行數據庫操作,所有我們這里就將事務的啟動與結束設置在try中數據庫操作的前后,而在catch異常處理中使用回滾(RollBack)動作。從而保證一旦對數據庫失敗,則回滾到初始狀態。

實例一】:用update命令將test數據庫的my_test表中的tid>'0003'的數據記錄的tname的值設為'Aillo'。然后再執行"create database Hello"的sql語句。由于在事務中不能使用create database這樣的語句,故程序執行到此處的時候會拋出一個異常,進而體現了rollback的作用。運行時可先將cmd.CommandText = "create database Hello";這行注釋掉運行,然后取消注釋,將Aillo改成其他的名字,再運行,比較兩次運行的結果。


using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;

namespace test1
{
public class Transaction
{
public SqlConnection getCon()
{
string constr="server=localhost;uid=sa;pwd=123456;database=test";
SqlConnection con=new SqlConnection(constr);
return con;
}
public void UpdateWithTran()
{
SqlConnection mycon = getCon();
mycon.Open();
SqlCommand cmd = new SqlCommand();
SqlTransaction mytran = mycon.BeginTransaction();

//綁定數據庫連接和事務對象
cmd.Connection = mycon;
cmd.Transaction = mytran;
try
{
cmd.CommandText = "use test";
cmd.CommandText = "update my_test set tname='Aillo' where tid>'0003'";
//cmd.CommandText = "create database Hello";
cmd.ExecuteNonQuery();
mytran.Commit();
}
catch (Exception ex)
{
mytran.Rollback();
Console.Write("事務操作出錯,已回滾。系統信息:" + ex.Message);
}
finally
{
mycon.Close();
}

}
}
class Program
{
static void Main(string[] args)
{
Transaction tran = new Transaction();
tran.UpdateWithTran();
}
}
}
 

------分隔線----------------------------
標簽(Tag):C# C#實例教程 c#基礎教程 C#源代碼 c#技巧
------分隔線----------------------------
推薦內容
猜你感興趣
99久久免费高清热精品