1. 程式人生 > >步步為營-50-事務

步步為營-50-事務

str reading ram 字符串 commit lin style tran sed

說明:比較常用

1 事務的四大特性:

  1.1 原子性atomicity 一個事務中包含的多個SQL語句,要麽同時成功,要麽同時失敗.

  1.2 一致性consistency 事務必須使數據庫從從一個一致性狀態變成另外一個一致性狀態.(銀行轉賬)

  1.3 隔離性 isolation 各個事務執行互不幹擾(鎖)

  1.4 持久性 durability 對數據庫中數據的改變是永久性的.

2 事務的使用

  2.1 在SQLServer中

  技術分享
select * from UserInfo
--01 事務
--01-01 開啟事務(try---catch)捕獲異常
BEGIN try
    begin transaction
        Update UserInfo 
set StuName = N逍遙小天狼 where EmpId = 10 Update UserInfo set StuAge = N年齡 where EmpId = 11 --01-02 提交事務 commit transaction END try BEGIN catch --01-03回滾事務 rollback tran; END catch
View Code

  2.2 在C#中

技術分享
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TransactionDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 01事務

            //01 連接字符串
            string connstr = "Data Source=127.0.0.1;uid=sa;pwd=sa;Initial Catalog=DemoDB;";

            using (SqlConnection conn = new SqlConnection(connstr))
            {
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    conn.Open();
                    //02-01創建事務
                    SqlTransaction tran = conn.BeginTransaction();
                    //02-02 把事務給cmd的事務屬性
                    cmd.Transaction = tran;

                    try
                    {
                        cmd.CommandText = @"Update UserInfo set StuName = N‘逍遙小天狼‘ where EmpId = 10
                                            Update UserInfo set StuAge = 111 where EmpId = 11";
                        cmd.ExecuteNonQuery();
                        //事務提交
                        tran.Commit();
                    }
                    catch (Exception)
                    {

                        tran.Rollback();
                    }

                }

                Console.Read();
         #endregion
            }
        }
    }
}
View Code

步步為營-50-事務