.Net和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();
}
上一篇: 图片上传并获得图片相对路径保存在数据库中
推荐阅读
-
Android Drawable和Bitmap的转换实例详解
-
SQLSERVER的版本信息和SP补丁信息查看方法
-
oracle,mysql,SqlServer三种数据库的分页查询的实例
-
sqlserver中delete、update中使用表别名和oracle的区别
-
android中选中菜单的显示跳转和隐式跳转的实例介绍
-
CorelDRAW实例教程:绘制随风飘舞的花瓣和月圆之夜飞逝的流星
-
Python中单线程、多线程和多进程的效率对比实验实例
-
Python可变和不可变、类的私有属性实例分析
-
Pycharm 创建 Django admin 用户名和密码的实例
-
实例详解python函数的对象、函数嵌套、名称空间和作用域