在C#中开启事务
?1.為什么要開啟事務:
舉一個簡單的例子:在銀行業務中,有一條記賬原則,即又借有貸。為了保證這種原則,每發生一筆銀行業務,就必須保證會計賬目上借方科目和貸方科目至少個少一筆,并且這兩筆要么同時成功,要么同時失敗。??
???事務是一個單個的工作單元。如果某一個事務成功,則在該事務中進行的所有數據更改均會提交,成為數據庫中的永久部分。如果事務遇到錯誤,這時必須進行回滾操作,則所有數據更改均被清除。
2.在C#中開啟事務
我們都知道在數據庫中如何開啟事務,那么如果想通過在C#中開啟事務必須借助Transaction類。
3.在C#中開啟事務的步驟
01.調用SqlConnection對象的BeginTransaction()方法,創建一個SqlTransaction對象,標志事務開始。
02.將創建的SqlTransaction對象分配給要執行的SqlCommand的Transaction屬性。
03.調用相應的方法執行SqlCommand命令。
04.調用SqlTransaction的Commit()方法完成事務。或調用Rollback()方法終止事務。??
4.在進行事務操作中的注意點
01.在調用BeginTransaction()方法開始事務之前,要打開數據庫連接,否則出現異常。
02.如果在事務的Commit()方法或RollBack()方法執行前數據庫連接斷開或關閉,則事務將回滾。
5.添加年級信息時候的事務處理例子
//準備連接字符串string str = "data source=.;initial catalog=Myschool;uid=sa;pwd=123";//創建數據庫連接對象SqlConnection con = new SqlConnection(str);//sql語句:添加一條記錄到年級表string sql = "insert into grade values(@gradename)";//創建SqlParameter對象,設置參數SqlParameter sp = new SqlParameter("@gradename", txtgradename.Text);//創建命令對象SqlCommand cmd = new SqlCommand(sql, con);//通過Parameter集合的add()方法天填充參數集合 cmd.Parameters.Add(sp);//打開連接 con.Open();//默認讓SqlTransaction對象為空SqlTransaction trans = null;//開啟事務:標志事務的開始trans = con.BeginTransaction();try{//將創建的SqlTransaction對象分配給要執行的sqlCommand的Transaction屬性cmd.Transaction = trans;//執行sql如果添加成功放回1int count=cmd.ExecuteNonQuery();if (count > 0){MessageBox.Show("成功");//事務提交 trans.Commit();}else {MessageBox.Show("失敗");//事務回滾 trans.Rollback();}}catch (Exception){//如果某個環節出現問題,則將整個事務回滾 trans.Rollback();}?
?
轉載于:https://www.cnblogs.com/hyjj/p/5337726.html
總結
- 上一篇: C#开发微信公众平台-就这么简单(附De
- 下一篇: iOS:Cocoa编码规范 -[译]Co