社区
C#
帖子详情
C#中调用存储过程,执行出错会不会回滚?
flyskylf
2006-11-27 03:51:24
我记得我以前做的程序,调用SQLServer中的存储过程,如果执行过程中出现错误就会回滚,最近又做了一个程序,执行出了错误又不回滚,我现在也不明白默认的存储过程到底会不会回滚?请高手给个答案.
...全文
480
20
打赏
收藏
C#中调用存储过程,执行出错会不会回滚?
我记得我以前做的程序,调用SQLServer中的存储过程,如果执行过程中出现错误就会回滚,最近又做了一个程序,执行出了错误又不回滚,我现在也不明白默认的存储过程到底会不会回滚?请高手给个答案.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
存储过程支持事务
C#
存储过程
修改数据的实例
这些组件使得在
C#
中
调用
存储过程
变得简单。 7. **性能优化** - 使用`using`语句来自动释放数据库资源,防止资源泄露。 - 尽可能减少数据库连接的打开和关闭次数,通过连接池管理数据库连接,提升性能。 - 对于...
c#
mysql 事务
回滚
_在事务
中
封装数据库修改
简介正如我们在数据插入、更新和删除概述 教程
中
探讨的那样,GridView 提供内置功能支持行级编辑...例如,大多数基于 web 的电子邮件客户端都使用一个网格列出每条消息,除了包含邮件的信息(主题、发送者等等)外,还...
ado.net mysql 事务_ADO.NET系列之事务和
调用
存储过程
前几篇我们介绍了Connection、Command和DataAdapter等对象,本节我们将学习ADO.NET
中
不可缺少的事务,以及
调用
数据库的
存储过程
。ADO.NET事务在许多大型、关键的应用程序
中
,计算机每秒钟都在
执行
大量的任务。更为...
C#
实现数据库交叉表操作的源代码
简介:
C#
作为一种广泛使用的编程语言,在处理...本资源提供了一组源代码,展示了如何使用
C#
与***框架来构建交叉表,并包括了SQL Server的PIVOT和UNPIVOT操作以及使用Linq-to-SQL查询。源代码示例详细演示了...
ADO.NET系列之事务和
调用
存储过程
ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ... 前几篇我们介绍了Connection、Command和DataAdapter等对象,本节我们将学习ADO.NET
中
不可缺少的事务,以及
调用
数据库的
存储过程
。 ADO...
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章