关于使用TADOConnection的事务功能的问题

xiaofeng_cxy 2003-01-23 02:18:01
为了创建临时表
在创建过程之前调用了TADOConnection.BeginTrans
之后调用了TADOConnection.RollbackTrans删除临时表
可是报错!!
EOleException with message 'ITransaction::Commit or ITransaction::Abort was called,and object is in a zombie state
请高手指点这是怎么回事????
我在线恭候!!!
...全文
44 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofeng_cxy 2003-01-23
  • 打赏
  • 举报
回复
我知道是什么原因了
因为TADODataset的CursorType设成了crUseServer
就是使用服务器端游标了
而在事务TADOConnection.RollbackTrans之后
临时表就不存在了
当然就会报错了
呵呵
耽误了大家这么久,多谢了。。。!!!:)
wangzn1979 2003-01-23
  • 打赏
  • 举报
回复
adoConnection.BeginTrans;
try
//....
adoConnection.CommitTrans;
except
adoConnection.RollbackTran;
end;
xiaofeng_cxy 2003-01-23
  • 打赏
  • 举报
回复
怎么没有人回答了????
xiaofeng_cxy 2003-01-23
  • 打赏
  • 举报
回复
请和我用qq讨论可以吗?
4221350
附言:TADOConnection的问题
xiaofeng_cxy 2003-01-23
  • 打赏
  • 举报
回复
可是我在TADOConnection.RollbackTrans之前并没有调用其它的
CommitTrans或是RollbackTrans啊?????
票票飞扬 2003-01-23
  • 打赏
  • 举报
回复
一个TADOConnection.BeginTrans只能对应一个Commit或者RollBack
Billy_Chen28 2003-01-23
  • 打赏
  • 举报
回复
事务用COMMIT提交了吗?
procedure TForm1.TransferButtonClick(Sender: TObject);

var

Amt: Integer;

TD: TTransactionDesc;

begin

if not SQLConnection1.InTransaction then //如果目前不在一个事务中

begin

TD.TransactionID := 1;

TD.IsolationLevel := xilREADCOMMITTED;

SQLConnection1.StartTransaction(TD);

try

Amt := StrToInt(AmtEdit.Text);

Debit.Params.ParamValues['Amount'] := Amt;

Credit.Params.ParamValues['Amount'] := Amt;

SQLConnection1.Commit(TD); //一切顺利则递交

except



SQLConnection1.Rollback(TD); //发生任何错误则回滚

end;

end;

end;

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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