在Delphi的ADO数据库应用程序中出现错误:
ITransaction::Commit 或Itransaction::Abort被调用,并且对象处于zombie状态
这是怎么回事?应该怎么解决呀?
环境D7+ADO2.8+SQL2000
ITransaction::Commit 或Itransaction::Abort被调用,并且对象处于zombie状态
这是怎么回事?应该怎么解决呀?
环境D7+ADO2.8+SQL2000
解决方案 »
- 请问adoquery在access数据库中能否使用事务,谢谢
- 菜鸟问题:选中dbgrid中某一个单元后,如何立刻得到他的值和列名。
- 压抑,这些简单的东西我都看不懂....只好请教你们了.在线等....
- 谁有INDY的中文资料,要多少分给多少分。
- 主键重复问题(Ado)
- 调查一下!up有分
- 大家在Delphi中都怎么运用OO?
- 有关.emf图片格式的问题(用QReport存的)。
- dbgrid中列字段的计算问题
- ***********************怎样在局域网中 编程读取共享文件夹的文件?
- 求购:FTP客户端操作组件(功能要求简单),价格¥500元。
- 我想把SQL Server数据库中的数据导出成如下格式的txt文件,用delphi应该怎样写啊?
我代码是这样写的
dim rs
set rs=server.createobjct("adodb.recrodset")
sql="select * from a"
rs.open sql,conn,1,1
do while not rs.eof
sql="insert into b (dd,aa) values ('" & trim(rs("dd")) & "','" & trim(rs("aa")) & "')"
conn.begintrans
conn.execute(sql)
if conn.errors.count>0 then
conn.rollbacktrans
response.write "对不起,你提交出错了!"
else
conn.committrans
end if
rs.movenext
loop
rs.close
set rs=nothing
这样子会出现以下错误
Microsoft OLE DB Provider for SQL Server 错误 '8000ffff' ITransaction::Commit 或 ITransaction::Abort 被调用,并且对象处于 zombie 状态。 /shop/txdhd.asp,行15 (rs.movenext这名出现) //请问有办法解决吗?
=========================================================================
//这样字就好了
dim rs
set rs=server.createobjct("adodb.recrodset")
sql="select * from a"
rs.open sql,conn,1,1
conn.begintrans //put here
do while not rs.eof
sql="insert into b (dd,aa) values ('" & trim(rs("dd")) & "','" & trim(rs("aa")) & "')"
conn.execute(sql)
if conn.errors.count>0 then
conn.rollbacktrans
response.write "对不起,你提交出错了!"
response.end
end if
rs.movenext
loop
conn.committrans //最后提交事务
rs.close
set rs=nothing
最好是调用数据库系统中的事务控制并写上事务标识begin transaction T1回滚时也带上T1标记在sql server中,在insert,update,delete语句后系统会自动增加commit transaction
(应该是吧,如果没记错.......)
ADOConnection1.BeginTrans
try
ADOConnection.exec('.....');
except
ADOConnection1.RollbackTrans;
end;
ADOConnection1.CommitTrans;
改为:
ADOConnection1.BeginTrans;
try
ADOConnection.exec('.....');
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;
另外,先检查你的SQL语句吧。
try
ADOConnection1.BeginTrans;
ADOConnection.exec('.....');
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;也报同样的错误. SQL语句是正确的.跟踪调试,它是执行了CommitTrans语句的.
ITransaction::Commit 或Itransaction::Abort被调用,并且对象处于zombie状态
ADOConnection1.BeginTrans;
ADODataSet1.UpdateBatch(arAll)
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;
也报错:ITransaction::Commit 或Itransaction::Abort被调用,并且对象处于zombie状态