跨数据库分布式事务的处理

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

namespace myCOM
{
    [Transaction(TransactionOption.Required)]
    public class MyComClass : ServicedComponent
    {
        public SqlConnection Conn;
        public SqlConnection Conn1;

        public void test(string updateStr)
        {
            try
            {
                string connection = string.Format("server = pwdpc; database = Northwind; uid = sa; pwd = ******;");
                SqlConnection Conn = new SqlConnection(connection);
                Conn.Open();

                string connection1 = string.Format("server = pwdpc; database = pubs; uid = sa; pwd = ******;");
                SqlConnection Conn1 = new SqlConnection(connection1);
                Conn1.Open();

                SqlCommand cmd = new SqlCommand();
                cmd.Connection = Conn;
                cmd.CommandType = System.Data.CommandType.Text;
                string sqlSentence = string.Format("update dbo.Customers set CompanyName = '{0}' where CustomerID = 'ALFKI'", updateStr);
                cmd.CommandText = sqlSentence;
                cmd.ExecuteNonQuery();

                //出异常
                //int i = 0;
                //int j = 1 / i;

                SqlCommand cmd1 = new SqlCommand();
                cmd1.Connection = Conn1;
                cmd1.CommandType = System.Data.CommandType.Text;
                string sqlSentence1 = string.Format("update dbo.authors set au_fname = '{0}' where au_lname = 'White'", updateStr);
                cmd1.CommandText = sqlSentence1;
                cmd1.ExecuteNonQuery();

                ContextUtil.SetComplete();
                Conn.Close();
                Conn1.Close();
            }
            catch (Exception ex)
            {
                ContextUtil.SetAbort();
                throw ex;
            }
            finally
            { }
        }
    }
}

posted on 2008-06-19 13:50  小黑混北京  阅读(296)  评论(0编辑  收藏  举报