高手指点:使用ADOConnet.BeginTrans后,用ADOConnet.RollbackTrans回滚就出错 错误提示:无法在此会话中启动更多的事务.我使用的是SQLSERVER2000的数据库.哪为高手知道为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://expert.csdn.net/Expert/topic/2853/2853452.xml?temp=.3599207 典型问题:你有没有提交的事务(有可能是因为提交时发生了异常而你丢掉了这个异常),而且试图在Begin另一个事务。方案:ADOConnet.BeginTrans和ADOConnet.RollbackTrans/conmit放在一个函数中,并且用try finally机制保证事务必定会被关闭。呵呵,仅供参考 注意格式的正确,保证每个事务都提交了ADOConnection1.Begintrans;try //代码 //... ADOConnection1.Committrans; //这一句不能掉except ADOConnection1.Rollbacktrans;end;另外,在调试程序的时候,Delphi会在每个异常处中断。如果你用了try...except则在运行exe的时候一切会正常。如果调试的时候也不想中断,菜单 tools\debugger options, Language exceptions 页,将Stop on Delphi Exceptions的钩去掉就可以了 ADOConnet.RollbackTrans 放在except 里面,只有产生异常时才回滚 正确的处理应该是: if conn.intransaction=true then RollbackTransaction 或者开展事务:if conn.intraction=true thenbegin conn.rollback; conn.begintrans;endelse conn.begintrans; 我现在也碰到这个问题: 我是用三层结构,服务器端使用adoconnection连接到sqlserver2000,然后想在datasetprovider的beforupdaterecord中使用语句: try adoconnection.begintrans; //这一句出错,错误信息如下 .... adoconnection.committrans; except .... end错误信息如下: 无法在此会话中启动更多的事务我在启用adoconnection.begintrans前用判断adoconnection.InTransaction是false,为什么? 指针问题 控件的方法 access数据库的E_Fail状态错误,被整崩溃了! 请教一个编译错误:Declaration differs from declaration? 关于dUDPServer的疑问 如何通过代理服务器访问WebService服务? 为什么用Quickrep设计的报表打印这么不稳定? JDK现在几点零??哪里有下载啊 怎么搞的,.exe突然变大。。。 OleContainer word 打印预览 问题 急!急! 请问如何把一串字符串中的字符逐个读出? [SOS]在DELPHI中如何引用一个开发包,如ADO之类的
方案:ADOConnet.BeginTrans和ADOConnet.RollbackTrans/conmit放在一个函数中,并且用try finally机制保证事务必定会被关闭。
呵呵,仅供参考
try
//代码
//...
ADOConnection1.Committrans; //这一句不能掉
except
ADOConnection1.Rollbacktrans;
end;另外,在调试程序的时候,Delphi会在每个异常处中断。如果你用了try...except则在运行exe的时候一切会正常。如果调试的时候也不想中断,菜单 tools\debugger options, Language exceptions 页,将Stop on Delphi Exceptions的钩去掉就可以了
if conn.intransaction=true then RollbackTransaction
if conn.intraction=true then
begin
conn.rollback;
conn.begintrans;
end
else
conn.begintrans;
我是用三层结构,服务器端使用adoconnection连接到sqlserver2000,然后想在
datasetprovider的beforupdaterecord中使用语句:
try
adoconnection.begintrans; //这一句出错,错误信息如下
....
adoconnection.committrans;
except
....
end错误信息如下:
无法在此会话中启动更多的事务我在启用adoconnection.begintrans前用判断adoconnection.InTransaction是false,
为什么?