同一服务器数据库事务性案例

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace TestTransaction
{
    /// <summary>
    /// 同一服务器数据事务性控制案例
    /// </summary>
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(@"Server  = GAOLIJUN; DataBase = TEST ; UID = sa ; PWD = GAOLIJUN ");
            conn.Open();
            //提升为分布式事务
            conn.EnlistTransaction(System.Transactions.Transaction.Current);
            SqlTransaction st = conn.BeginTransaction();
            try
            {
                string sql1 = "INSERT INTO TbUser  (UserId, UserName ) VALUES ('01','gaolijun')";
                string sql2 = "INSERT INTO TbUser  (UserId, UserName ) VALUES ('02','gaoli')";
                SqlCommand cmd = new SqlCommand(sql1, conn);
                cmd.Transaction = st;
                cmd.ExecuteNonQuery();
                cmd = new SqlCommand(sql2, conn);
                cmd.Transaction = st;
                cmd.ExecuteNonQuery();
                //改变当前数据库,以体现分布式事务的特性
                conn.ChangeDatabase("TEST2");
                OtherTransaction(st);
                st.Commit();
            }
            catch (Exception ex)
            {
                st.Rollback();
            }
        }
        private void OtherTransaction(SqlTransaction st)
        {           
            string sql1 = "INSERT INTO TbUser  (UserId, UserName ) VALUES ('01','gaolijun')";
            string sql2 = "INSERT INTO TbUser  (UserId, UserName ) VALUES ('01','gaoli')";
            SqlCommand cmd = new SqlCommand(sql1, st.Connection);
            cmd.Transaction = st;
            cmd.ExecuteNonQuery();
            cmd = new SqlCommand(sql2,  st.Connection);
            cmd.Transaction = st;
            cmd.ExecuteNonQuery();

        }
    }
}

原文地址:https://www.cnblogs.com/gaolijun1986/p/2159772.html