CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

大侠请进:ADO数据库应用程序出现'对象处于zombie状态'应该怎么解决?

楼主siaosa()2005-01-03 08:03:41 在 Delphi / 数据库相关 提问

在Delphi的ADO数据库应用程序中出现错误:  
  ITransaction::Commit   或Itransaction::Abort被调用,并且对象处于zombie状态  
  这是怎么回事?应该怎么解决呀?  
  环境D7+ADO2.8+SQL2000  
  问题点数:100、回复次数:9Top

1 楼caiso(十年磨一剑)回复于 2005-01-03 09:00:49 得分 0

顶一下Top

2 楼Kshape(C/C++初学者~~~~)回复于 2005-01-03 09:50:54 得分 30

例如:A   表中有10条记录,我要将这10条记录,插入B表中。  
   我代码是这样写的  
   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  
   
  Top

3 楼Kshape(C/C++初学者~~~~)回复于 2005-01-03 09:54:00 得分 30

所以:  
  最好是调用数据库系统中的事务控制  
   
  并写上事务标识  
   
  begin   transaction   T1  
   
  回滚时也带上T1标记  
   
  在sql   server中,在insert,update,delete语句后系统会自动增加commit   transaction  
  (应该是吧,如果没记错.......)  
  Top

4 楼kuki84(天道酬勤)回复于 2005-01-03 11:27:13 得分 10

upTop

5 楼siaosa()回复于 2005-01-03 21:12:29 得分 0

我是这样使用才出错的.  
  ADOConnection1.BeginTrans  
  try  
      ADOConnection.exec('.....');  
  except  
      ADOConnection1.RollbackTrans;  
  end;  
  ADOConnection1.CommitTrans;  
   
  Top

6 楼Kevin_Lmx(繁华阅尽)回复于 2005-01-03 21:18:43 得分 30

应该是你的SQL语句有错误,所以事务回滚了,也就是执行了ADOConnection1.RollbackTrans;这一句,然而在异常处理后你又添加了一句ADOConnection1.CommitTrans;,此时你的事务已经回滚,再提交当然就出错了。  
  改为:  
  ADOConnection1.BeginTrans;  
  try  
      ADOConnection.exec('.....');  
   ADOConnection1.CommitTrans;  
  except  
      ADOConnection1.RollbackTrans;  
  end;  
  另外,先检查你的SQL语句吧。Top

7 楼siaosa()回复于 2005-01-04 08:45:50 得分 0

改成:  
  try  
      ADOConnection1.BeginTrans;  
      ADOConnection.exec('.....');  
   ADOConnection1.CommitTrans;  
  except  
      ADOConnection1.RollbackTrans;  
  end;  
   
  也报同样的错误. SQL语句是正确的.跟踪调试,它是执行了CommitTrans语句的.  
  ITransaction::Commit   或Itransaction::Abort被调用,并且对象处于zombie状态Top

8 楼siaosa()回复于 2005-01-04 09:54:53 得分 0

try  
      ADOConnection1.BeginTrans;  
      ADODataSet1.UpdateBatch(arAll)  
   ADOConnection1.CommitTrans;  
  except  
      ADOConnection1.RollbackTrans;  
  end;  
  也报错:ITransaction::Commit   或Itransaction::Abort被调用,并且对象处于zombie状态Top

9 楼siaosa()回复于 2005-01-04 10:26:50 得分 0

有没有办法判断出ADOConnection是否处在zombie状态?Top

相关问题

  • 如何在单机WIN98上利用ADO开发MSSQL数据库应用程序???
  • Client/Server数据库应用程序
  • 发布Mysql数据库应用程序
  • 哪里有用Visual C++编写ADO数据库应用程序较全的资料?
  • C/S真的就没用了?谁能讲讲用ADO开发三层数据库应用程序的好处
  • 我用ADO写了一个数据库应用程序,编译出现了如下错误:清高手指教!!!!
  • 如何才能把ADO连接的数据库应用程序安装在不同的目录
  • 一般使用ACCESS做本地数据库,应用程序一般用ADO好吗?
  • 关于设计数据库应用程序问题?
  • SOS!!!!!不需要任何控件的数据库应用程序!!!!!!

关键词

  • 语句
  • 解决
  • adoconnection
  • itransaction
  • committrans
  • rollbacktrans
  • rs
  • begintrans
  • 处于zombie状态
  • 对象

得分解答快速导航

  • 帖主:siaosa
  • Kshape
  • Kshape
  • kuki84
  • Kevin_Lmx

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo