社区
C#
帖子详情
C#中调用存储过程,执行出错会不会回滚?
flyskylf
2006-11-27 03:51:24
我记得我以前做的程序,调用SQLServer中的存储过程,如果执行过程中出现错误就会回滚,最近又做了一个程序,执行出了错误又不回滚,我现在也不明白默认的存储过程到底会不会回滚?请高手给个答案.
...全文
466
20
打赏
收藏
C#中调用存储过程,执行出错会不会回滚?
我记得我以前做的程序,调用SQLServer中的存储过程,如果执行过程中出现错误就会回滚,最近又做了一个程序,执行出了错误又不回滚,我现在也不明白默认的存储过程到底会不会回滚?请高手给个答案.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Dream6000
2006-12-03
打赏
举报
回复
To : sxmsy888(网际浪子)
在SQLServer 2000下,之前我也认为会回滚,测试后发现并不回滚!
SqlServer 2005下没有测试过
flyskylf
2006-11-29
打赏
举报
回复
我用的是2000,前一段时间(半年了)会回滚的,但是最近写的程序又不回滚了,不知道是不是我记错了
CodeWalker2999
2006-11-29
打赏
举报
回复
Dream6000
我用SqlServer 2005测试了一下,确实是回滚了啊,两条记录都没写入。
marvelstack
2006-11-29
打赏
举报
回复
需要使用SqlTransaction类启动事务,或在存储过程中实现Sql 事务语句。
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
Dream6000
2006-11-28
打赏
举报
回复
之前说错了 存储过程是不会被回滚的
create table t2
(
tID int identity(1,1),
tAction nvarchar(30) not null
)
go
create proc p2
as
insert into t2 (tAction) values ('xxx')
insert into t2 (tAction) values (null)
exec p2
虽然出错但 xxx 可以被写入
CodeWalker2999
2006-11-28
打赏
举报
回复
同意Dream6000
不加BEGIN TRANSACTION COMMIT TRANSACTION也会回滚
Dream6000
2006-11-28
打赏
举报
回复
存储过程中的sql命令属于事务处理范畴,即存储过程中的所有sql语句要么都执行,要么都不执行,即"原子性".
你可以写一个存储过程来试试:
create database test
use test
create datatable t1
(
tID int identity(1,1),
tAction nvarchar(30)
)
go
create proc p1
as
insert into t1 (tAction) values ('xxx')
insert into t1 (tAction) values (bbb)
因为 bbb 没有加引号 所以会出错 ,之前成功执行的 'xxx'也被回滚了
zw_angel
2006-11-27
打赏
举报
回复
必须加BEGIN TRANSACTION COMMIT TRANSACTION才能回滚
xyh2002
2006-11-27
打赏
举报
回复
sql中是要这样写的,c#代码会简单些,但是c#代码并不一定会回滚,如果你的数据库连接断了,那么就谈不上执行失败和回滚了。
flyskylf
2006-11-27
打赏
举报
回复
我的另外一个帖子:大家也看看吧,完了一起结掉
http://community.csdn.net/Expert/topic/5188/5188497.xml?temp=.7404901
一个存储过程要执行多条SQL语句,如果程序执行出错为了能够回滚是不是要如下写法?
BEGIN TRANSACTION
EXEC SQL语句1
SET @Error = @@ERROR
IF @Error != 0 GOTO ERROR_HANDLER
EXEC SQL语句2
SET @Error = @@ERROR
IF @Error != 0 GOTO ERROR_HANDLER
EXEC SQL语句3
SET @Error = @@ERROR
IF @Error != 0 GOTO ERROR_HANDLER
.....
EXEC SQL语句N
SET @Error = @@ERROR
IF @Error != 0 GOTO ERROR_HANDLER
COMMIT TRANSACTION
ERROR_HANDLER:
IF @@TRANCOUNT != 0 ROLLBACK TRANSACTION
RETURN @Error
有没有简单的写法不要写那么多的 SET @Error = @@ERROR IF @Error != 0 GOTO ERROR_HANDLER
lengxiaowei
2006-11-27
打赏
举报
回复
当然不会啦
一定要启动了事务,它才会回滚
mobydick
2006-11-27
打赏
举报
回复
在代码中使用分布式事务TransactionScope,这个需要数据库支持,并打开相应的服务。
liujia_0421
2006-11-27
打赏
举报
回复
不会...
除非加上事务...
flyskylf
2006-11-27
打赏
举报
回复
必须写BEGIN TRANSACTION COMMIT TRANSACTION等代码才能回滚?
flyskylf
2006-11-27
打赏
举报
回复
也就是说存储过程默认是不会回滚的?
mpss
2006-11-27
打赏
举报
回复
程序没写事条,过程中也没写的话,那就不会
flyskylf
2006-11-27
打赏
举报
回复
我是在存储过程中用的事务
51Crack
2006-11-27
打赏
举报
回复
可以在程序中用事务,也可以在存储过程用事务!
不可同时使用!
flyskylf
2006-11-27
打赏
举报
回复
我里面没有写那些BEGIN TRANSACTION COMMIT TRANSACTION等代码,会不会回滚?
程序小童的爸爸
2006-11-27
打赏
举报
回复
存储过程支持事务
ado.net mysql 事务_ADO.NET系列之事务和
调用
存储过程
前几篇我们介绍了Connection、Command和DataAdapter等对象,本节我们将学习ADO.NET
中
不可缺少的事务,以及
调用
数据库的
存储过程
。ADO.NET事务在许多大型、关键的应用程序
中
,计算机每秒钟都在
执行
大量的任务。更为经常的不是这些任务本身,而是将这些任务结合在一起完成一个业务要求,称为事务。如果能成功地
执行
一个任务,而在第二个或第三个相关的任务
中
出现错误,将
会
发生什么?这个...
c#
mysql 事务
回滚
_在事务
中
封装数据库修改
简介正如我们在数据插入、更新和删除概述 教程
中
探讨的那样,GridView 提供内置功能支持行级编辑和删除功能。您只需单击几次鼠标就可以创建丰富的数据修改界面而不用写一行代码,前提是您进行的编辑和删除是基于每行数据的。然而,在某些情况下,这还不够,我们需要让用户能够编辑或删除批量记录。例如,大多数基于 web 的电子邮件客户端都使用一个网格列出每条消息,除了包含邮件的信息(主题、发送者等等)外,还...
C#
操作Excel---基础篇
在用
C#
操作Excel表格之前,我想应该对Excel有所了解,然后再来从基础学起。 以前从来没机
会
用Excel,因此对Excel不是很熟,前几天竟然被搞管理的几个美媚笑话,气死俺了。我现在就去学习学习Excel了,待
会
见。。。。 下面这篇文章是我从网上搜集来的,写得很好,很适合入门。我们开始学习吧!
C#
Operate Excel File
[转贴]出处:http://blog.csdn.net/metababy/archive/2005/12/28/563680.aspx引言 Excel是微软公司办公自动化套件
中
的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎。在设计应用系 统时,对于不同
Visual
C#
编程操作Excel
Excel是微软公司办公自动化套件
中
的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎。在设计应用系统时,对于不同的用户,他们对于打印的需求是不一样的,如果要使得程序
中
的打印功能适用于每一个用户,可以想象程序设计是十分复杂的。由于Excel表格的功能强大,又由于几乎每一台机器都安装了它,如果把程序处理的结果放到Excel表格
中
,这样每一个用户就可以根据自己
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章