Select返回0行时不能对TADOQuery执行Close()操作?此时该如何处理TADOQuery对象

javahui 2004-08-17 04:57:40
代码如下:

TADOQuery *query;

int ID=1;
char reg;

......
......

sql="select para_value from ParasTable where Para_Index="+IntToStr(ID);

query->SQL->Add(sql);

query->Open();

if(query->RecordCount<1) reg=0;

else
{
reg=1;
query->First();
value=query->FieldByName("para_value ")->AsInteger;
}

query->Close();//此处当reg=0时抛出异常
query->SQL->Clear();

.......
.......


为什么select没有返回结果时执行query->Close()抛出异常“Project Project1.exe raised exception class EOleException with message 'BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。”
如果select返回有结果(reg=1)则没有问题。但是如果不执行query->Close();query->SQL->Clear();则后续的查询操作无法进行。
刚接触c++builder及其数据库操作,不知如何解决?
...全文
127 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
大个啊 2004-11-01
  • 打赏
  • 举报
回复
非常感谢,
我刚刚也遇到这个问题,
有补丁就好。
jishiping 2004-08-18
  • 打赏
  • 举报
回复
下面是补丁的下载地址(需要先运行BCB5EntUpdate1,结束后再运行BCB5ADOUpgrade1):
ftp://ftpc.borland.com/pub/bcppbuilder/devsupport/patches/bcpp5/BCB5EntUpdate1.exe
ftp://ftpc.borland.com/pub/bcppbuilder/devsupport/patches/bcpp5/BCB5ADOUpgrade1.exe
我不懂电脑 2004-08-18
  • 打赏
  • 举报
回复
打补丁
cnrealboy 2004-08-18
  • 打赏
  • 举报
回复
可以自动升级到6,这个不用担心。
Lonelywolf1899 2004-08-18
  • 打赏
  • 举报
回复
代码没错的
ralpha08 2004-08-17
  • 打赏
  • 举报
回复
其实不用升级,下个补丁装一下就行了!
现在用cb5的也很多
我也一直在用
javahui 2004-08-17
  • 打赏
  • 举报
回复
刚刚查到一个历史帖http://community.csdn.net/Expert/topic/3018/3018284.xml?temp=.8831751
说是CB5的问题。要下补丁或者升级到CB6.
我用的就是CB5.

那么请问CB5的工程(比较大,数据库和通讯相关的)能够自动升级到CB6吗?
ralpha08 2004-08-17
  • 打赏
  • 举报
回复
去下个ADO的补丁
futulove 2004-08-17
  • 打赏
  • 举报
回复
你用的是不是BCB5,这是ADO的一个BUG需要补丁的
用BCB6就没有了

1,178

社区成员

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

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