ADO.NET 4 快速上手(6)——事务

六、    事务


1.    本地事务

事务只能在打开的数据库连接上工作。
using (SqlConnection conn = new SqlConnection(
    "Data Source=localhost;Initial Catalog=SettingKnowledgeManagement;Integrated Security=True"))
{
    conn.Open();
    SqlTransaction tran = conn.BeginTransaction();
    SqlCommand cmd = new SqlCommand("select * from tb_user", conn, tran);
    // 或:
    // cmd.Transaction = tran;

    try
    {
        tran.Commit();
    }
    catch (Exception e1)
    {
        try
        {
            tran.Rollback();
            // output e1.Message
        }
        catch (Exception e2)
        {
            // output e2.Message
        }
    }
}

2.    分布事务

.Net Framework通过“微软分布式事务处理协调器(MSDTC)”对分布式事务提供支持。TransactionScope实现,但不是ADO.NET的类,要添加引用System.Transactions.dll。
提示:在运行分布式事务时,遇到错误“MSDTC on server ‘servername’ is unavailable”。指Distributed Transaction Controller服务没有运行,启动该服务即可。

using (TransactionScope envelope = new TransactionScope())
{
    using (SqlConnection sourceConn = new SqlConnection("connection string"))
    {
        using (SqlConnection destConn = new SqlConnection("connection string"))
        {
            try
            {
                sourceConn.Open();
                sourceCmd.ExecuteNonQuery();

                destConn.Open();
                destCmd.ExecuteNonQuery();

                envelope.Complete();
            }
            catch (Exception ex)
            {
                // Output "Error transferring funds: " + ex.Message;
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值