请教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