首页 > 数据库 >.Net和SqlServer的事务处理实例

.Net和SqlServer的事务处理实例

时间:2022-12-05 11:02:28浏览次数:37  
标签:myCommand myTrans SqlServer 事务处理 intErrorCode products myConnection Net


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(); 
}

标签:myCommand,myTrans,SqlServer,事务处理,intErrorCode,products,myConnection,Net
From: https://blog.51cto.com/u_11295556/5911581

相关文章

  • SqlServer表分区
    你是否在千方百计优化SQLServer数据库的性能?如果你的数据库中含有大量的表格,把这些表格分区放入独立的文件组可能会让你受益匪浅。SQLServer2005引入的表分区技术,让用......
  • SQLSERVER 2005 表分区说明
    2005 分区表实际应用例子  定义,原理网上讲得多了.在这就不费口舌,记录下创建过程.  一. 最基本,最重要的一步就是创建分区函数.创建分区函数首先要确定分区键--既......
  • SQLServer 2005 海量数据解决方案(分区表)与对已存在的表进行分区
    这两天一直在研究2005中如何对表进行分区,但是参考了多数资料都是说新建表后再将原表中数据插入到新表中,这样有些不方便.  最后找到了在已有表上做分区表的方法.见......
  • VMware ESXi 6.7安装win10EFI Network获取不到数据
    错误信息如下图:接着出现以下画面解决方法如下:1.首先将虚拟机关机2.将固件由EFI改为BIOS3.再次启动虚拟机,此时就可以安装win10了......
  • .net core GBK 编码问题
     在.netcore中,utf8编码转GBK编码会报错,.netcore无法实现编码的转换解决方法1、Nuget中搜索安装System.Text.Encoding.CodePages2、在startup中做如下设置publ......
  • dlibdotnet
    v19.17.0.20190813本机:x86失败 参考说明:https://github.com/takuya-takeuchi/DlibDotNet/issues/136本机:x64成功服务器:x86和x64均失败x86:x64:  v19.2......
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:BarcodeReader组件
    本文简述如何在Smobiler中使用BarcodeReader组件进行条码识别。Barcodereader通过机器学习能识别不规则条码,效率更好。Step1.新建一个SmobilerForm窗体,并在窗体中加入......
  • 在sqlserver2008中收缩日志文件
    —先备份数据库(含日志文件)usemyhisgobackupdatabasemyhistodisk=’d:\myhis_rzbak’go—设为简单恢复模式use[master]goalterdatabasemyhissetr......
  • 小TIPS:asp.net 页面中的注释
    在asp.net2.0中,在页面HTML部分,可以使用服务端注释servercomments,那样是不会将所注释的内容回传到客户端的,做一个对比下面<body><formid="form1......
  • 好消息,scott的asp.net 2.0数据导航系列全部出版了
    好消息,scott的asp.net2.0数据导航系列全部出版了,大师级的作品,共75篇,分VB。NET和c#版本,全面系统讲解了asp.net2.0中数据控件,数据访问,缓存,master-de......