c# 事务处理。。100分求救.。。还会在加到400为止

来源:百度知道 编辑:UC知道 时间:2024/05/15 15:46:57
我用winform开发了一个程序,其中有些事件的处理必须连贯起来执行,比如:

void 事件1();
void 事件2();
void 事件3();

其中这3个事件里的数据处理没办法用存储过程去实现,因为其中循环太多,所传入的参数也复杂。。。我现在有一个想法。。大概是这么一个意思,哪位大虾知道怎么做的帮帮忙啊。。。

try
{
???事务开始?????
void 事件1();
void 事件2();
void 事件3();

???成功commit()????
}catch(exception ex)
{
????失败,rollback???
}

上面只是我的一个想法,不知道是否能不能够实现,还忘指点。如果是在数据底层对单独的一个sql事务处理的话,就不必麻烦了

有点像银行转账, 转出人账号要扣钱,转入人账号要加钱.这两笔动作要同时执行成功才提交.不然银行就乱套了.
我理解你所描述的事件就是sql操作语言.即对数据的增删改.不知是否?
public void RunSQLTransaction(ArrayList sqls)//多条sql语句存放到ArrayList里,传参进来
{
int i=0;
SqlConnection Conn= new SqlConnection(ConnStr);
SqlTransaction tran; //定义事务
Conn.Open();//打开连接
SqlCommand Cmd = Conn.CreateCommand();

tran = Conn.BeginTransaction();//事务开始
Cmd.Connection = Conn;
Cmd.Transaction = tran;//事务关联
try
{
for (i = 0; i < sqls.Count; i++)
{
Cmd.CommandText = sqls[i].ToString();
Cmd.ExecuteNonQuery();
}
tran.Commit();//全部成功提交
}
catch
{
tran.Rollback();//有一个失败,回滚