在VB里用ADO的CONNECTION对象执行SQL的问题

yuminggang 2002-04-24 04:29:48
我用一个连接执行SQL语句,大致如下:
dbconn.BeginTrans
dbconn.Execute mdSQL
dbconn.CommitTrans

其中mdSQL是由若干条SQL动态拼成拼成的一个长SQL串,当我执行的时候发现,
如果第一条SQL出错,
那么系统会报错,没有任何问题。但是如果不是第一条,而是其他的SQL出错,那么
不报任何错,而且出错SQL前面的SQL都已经执行了,而且没有回滚,没有报错。

我希望的效果是,只要其中任何一条出错,那么就应该都回滚,并且报错。

如何处理,谢谢了!
...全文
49 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuminggang 2002-04-25
  • 打赏
  • 举报
回复
非常感谢你的回复,这样是在数据上没有问题了。
但是虽然回滚了,但是在前端执行的程序还是没有报错,
ADO认为执行是正确的,这样我就无法确认是否执行成功了,
请就如果得到错误信息,并返回客户端给予指教。

谢谢。
Shark_S 2002-04-24
  • 打赏
  • 举报
回复
Set XAbort_Act On
Begin Tran
....
Commit Tran

SQL默认不强制回滚,你需要加参数。
yuminggang 2002-04-24
  • 打赏
  • 举报
回复
你这样单条执行当然没有问题。
而我的是动态的拼成一个SQL,是一个公用的数据服务端,所以当无法确定有几条的时候,只能使用一次执行。

不能分开啊!
load 2002-04-24
  • 打赏
  • 举报
回复
我一般是这样,好像没有你说的问题
on error goto ERRPOS
dbconn.BeginTrans
dbconn.Execute SQL1
dbconn.Execute SQL2
dbconn.Execute SQL3
……
dbconn.CommitTrans

ERRPOS:
dbconn.roolback(这个函数忘了:))

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧