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


    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();

            }
        }
    }

  • 相关阅读:
    JAVAWEB 一一框架整合(SSI : Spring+SpringMVC+ ibtis)
    接口一一默认方法
    内部类
    java抽象类的使用
    Node(十)之Mongoose配合Node路由实现邮箱注册登录(Post版)
    Node(九)之Node配合MongoDB实现简单的注册登录
    Node(八)之MongoDB简单应用
    JS案例:Ajax实现简单局域网聊天室
    JS瀑布流懒加载案例
    JS表格小案例
  • 原文地址:https://www.cnblogs.com/gaolijun1986/p/2159772.html
Copyright © 2020-2023  润新知