有个功能 需要以下操作
第一 向A表添加一个信息 当成功后执行第二
第二 向B表添加一个信息 此处 就容易出现问题
问题是 当向B表添加失败时 就同时取消第一步操作,没有试用存储过程。需要在.NET 后台代码中处理 请教该怎么用事务操作?
第一 向A表添加一个信息 当成功后执行第二
第二 向B表添加一个信息 此处 就容易出现问题
问题是 当向B表添加失败时 就同时取消第一步操作,没有试用存储过程。需要在.NET 后台代码中处理 请教该怎么用事务操作?
con.Open();//打开连接
SqlTransaction sqltra = con.BeginTransaction();//开始事务
SqlCommand cmd = new SqlCommand();//实例化
cmd.Connection = con;//获取数据连接
cmd.Transaction = sqltra;//,在执行SQL时,
try
{
string sql = "";//向A表添加一个信息的SQL
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
string sql = "";
cmd.CommandText = sql;//向B表添加一个信息的SQL
cmd.ExecuteNonQuery(); sqltra.Commit();
}catch(Exception ex)
{
sqltra.Rollback();
}
这样既可。
{
//方法一
//方法二
scope.Commit() ;
}
--也可以写个存储过程判断--
create proc ceshi
(
@par1 int,@par2 varchar(50),@output int
)
declare @count int
insert into table1(par) values(@par2)
set @count = @@rowcount
if(@count=1)
begin
insert into table2(par) values(@par2)
set @count=1
end
else
set @count=-1
--不过这个还是事务比较灵活--