COM+调用事务失败,不知道什么原因
我写了一个简单的com+程序是往两个数据库插入记录,用的是com+事务,在非com+程序中相同的语句是好用的,可是在com+程序中打不开数据库连接,
加了几个Console.WriteLine看了一下走到什么地方
结果输出了
5
ccccc
应该是数据库连接没打开,有碰到过这种情况的人吗?
这是为什么呢?
代码如下:
using System;
using System.EnterpriseServices;
using System.Data;
using System.Data.SqlClient;
using System.Reflection;
namespace COMsimple
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
///
[Transaction(TransactionOption.Required)]
public class TxCfgClass : ServicedComponent
{
private static string cnn1 = "workstation id=GAIXZH;packet size=4096;user id=sa;data source=SUPPORT;persist security info=False;initial catalog=CRTEST";
private static string cnn2 = "workstation id=GAIXZH;packet size=4096;user id=sa;data source=SUPPORT;persist security info=False;initial catalog=testcom";
private static string add1 = "insert into users(truename,regname,pwd,sex,email) values('98a','03','22','11','1')";
private static string add2 = "insert into users values('01','02')";
public TxCfgClass(){}
private void ExecSQL(string connect,string sql)
{
System.Data.SqlClient.SqlConnection cnn = new SqlConnection(connect);
System.Data.SqlClient.SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = sql;
Console.WriteLine("5");
cnn.Open();
Console.WriteLine("6");
cmd.ExecuteNonQuery();
cnn.Close();;
}
public void Add()
{
try
{
ExecSQL(cnn1,add1);
Console.WriteLine("aaaa");
ExecSQL(cnn2,add2);
Console.WriteLine("bbbb");
Console.Read();
ContextUtil.SetComplete();
}
catch(Exception e)
{
ContextUtil.SetAbort();
Console.WriteLine("ccccc");
Console.Read();
}
}
}
}