加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.Net和SqlServer的事务处理实例

发布时间:2020-12-12 15:49:13 所属栏目:MsSql教程 来源:网络整理
导读:1,SqlServer存储过程的事务处理 一种比较通用的出错处理的模式大概如下: Create procdure prInsertProducts ( @intProductId int, @chvProductName varchar(30), @intProductCount int ) AS Declare @intErrorCode int Select @intErrorCode=@@Error Begin

1,SqlServer存储过程的事务处理
一种比较通用的出错处理的模式大概如下:
Create procdure prInsertProducts
(
@intProductId int,
@chvProductName varchar(30),
@intProductCount int
)
AS
Declare @intErrorCode int
Select @intErrorCode=@@Error
Begin transaction
if @intErrorCode=0
?? begin
???? -insert products
???? insert products(ProductID,ProductName,ProductCount)
???? values(@intProductId,@chvProductName,@intProductCount)
???? Select @intErrorCode=@@Error --每执行完一条t-sql语句马上进行检测,并把错误号保存到局部变量中
?? end
if @intErrorCode=0
?? begin
???? -update products
???? update products set ProductName=’MicroComputer’ where ProductID=5
???? Select @intErrorCode=@@Error
?? end
if @intErrorCode=0
?? commit transaction
else
?? rollback transaction

Return @intErrorCode --最好返回错误代号给调用的存储过程或应用程序

2,.Net中使用事务处理
SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
myConnection.Open();

SqlTransaction myTrans = myConnection.BeginTransaction(); //使用New新生成一个事务
SqlCommand myCommand = new SqlCommand();
myCommand.Transaction = myTrans;

try
{
myCommand.CommandText = "Update Address set location=’23 rain street’ where userid=’0001’";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Record is udated.");
}
catch(Exception e)
{
myTrans.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Sorry,Record can not be updated.");
}
finally
{
myConnection.Close();
}


说明:在SqlServer中,每条Sql语句都作为一个事务来执行,所以无论在存储过程,还是在.net代码中使用,执行单条Sql语句没有必要使用事务处理,上面只是为了简化表达而对单条Sql语句使用事务处理

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读