在C#中使用COM+实现事务控制(2)

来源:互联网 责任编辑:栏目编辑 发表时间:2013-07-01 06:15 点击:


private static string init2 = "user id=sa;password=;initial catalog=NorthWind;data source=(local)";


private static string add1 = "insert into authors('au_lname','au_fname') values('test1', 'test2')";

 

private static string add2 = "insert into sample values('test1',22)";

//the error sql statement

//there is not table “sample”


public TxCfgClass() {}


private void ExecSQL(string init, string sql)

{

SqlConnection conn = new SqlConnection(init);

SqlCommand cmd = conn.CreateCommand();

cmd.CommandText = sql;

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

}


//添加一条记录到数据库

public void Add()

{

try

{

//在一数据库中插入一条记录


ExecSQL(init1, add1);

Console.WriteLine("the operation in the same database completely");


//在另外一个数据库中插入两条记录

//这次执行的是一个错误的SQL语句


ExecSQL(init2, add2);

Console.WriteLine("the operation in the other database

completely");


Console.WriteLine("Record(s) added, press enter...");

Console.Read();


}

catch(Exception e)

{

//事务回滚

ContextUtil.SetAbort();

Console.WriteLine("Because there are some errors in the operation ,so transcation abort");

Console.WriteLine("The error is " + e.Message);

Console.WriteLine("abort successfully");

Console.Read();

}

}

}

}

2:程序说明:

添加命名空间 using System.EnterpriseServices;因为本程序使用了其中的ContextUtil类

[ Transaction(TransactionOption.Required) ] 说明DLL需要事务支持

本程序的TxCfgClass 类从ServicedComponent类中继承,这样并不会影响该类,而只是在该类中添加了两个额外的方法,这两个方法可以使代码共享变

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 用C#制作屏幕捕获程序
  • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
  • 遍历ArrayList易犯错误
  • C#对XML操作:一个处理XML文件的类(1)
  • .NET简谈反射(动态调用)
  • 使用C#编写LED样式时钟控件
  • DataList嵌套问题 如何删除内层子DataList的记录
  • 怎样用C#实现完整文档打印功能
  • .NET简谈自定义事务资源管理器
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1