读书人

请问ASP.NET中的OleDbTransaction

发布时间: 2012-01-10 21:26:51 作者: rapoo

请教ASP.NET中的OleDbTransaction
由于我要多个地方经常对一张表进行多次更新操作,所以我把这更新操作封装起来,做成一个用户控件。

我想要多次调用更新方法,只要其中有一个更新出错时,所有的更新事务就回滚,否则一起执行,要怎么办?
对OleDbTransaction不是很了解,希望能讲细点
谢谢

代码如:
c_update.ascx
public bool f_update(string name,string content)
{
try
{
cmd=conn.CreateCommand(); //conn未设置事务
cmd.CommandText= "update tablename set content=@content where name=@name ";
cmd.Parameters.Add( "@content ",content);
cmd.Parameters.Add( "@name ",name);
cmd.ExecuteNonQuery();
conn.Dispose();
return true;
}
catch
{
return false;
}
}

别处ASP.NET调用
如update.aspx
bool l_return = true;
if (c_update.f_update( "name1 ", "1 ")==false)
{
l_return = false;
}
if (c_update.f_update( "name2 ", "2 ")==false)
{
l_return = false;
}
if (c_update.f_update( "name3 ", "3 ")==false)
{
l_return = false;
}
...(多个如此)

我想要只有l_return=false时,所有的更新事务就回滚,否则一起执行,要怎么办?
对OleDbTransaction不是很了解,希望能讲细点
谢谢

[解决办法]
在c_update.ascx共有1个OleDbTransaction,

然后在c_update.ascx提供3个方法,分别为开始事务、提交、回滚。

然后在update.aspx调用这3个方法
[解决办法]
这些执行语句必须要写在同一个事务内部才行
http://blog.csdn.net/wszhoho/archive/2007/03/16/1530892.aspx
这里有两个语句的例子,应该能实现你的要求。
[解决办法]
至少,你可以设计一个自定义类来封装你要工作,但不要去继承扩展 UserControl

读书人网 >asp.net

热点推荐