微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.Net和SqlServer的事务处理实例

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语句使用事务处理

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐