ADOEOF问题

yk_xiong 2003-08-05 04:11:30
用ADO连接ORACLE数据库
执行语句:
return SUCCEEDED(m_pRecordset->Open(_variant_t(LPCTSTR(m_strSQL)),
_variant_t((IDispatch*)m_pConnection->GetConnection(), true),
CursorType, LockType, lOption));

当select 语句有一条返回记录时
为什么m_pRecordset->AdoEof()会时TRUE?
如果这样则m_pRecordset->GetCollect(__variant_t(index))就要异常了!!
...全文
378 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qly2010 2003-08-06
  • 打赏
  • 举报
回复
如果你的程序在别的机器上运行正确,可能是C++本身的问题.你可以将Debug目录删除,然后再重新编译一次看看.应该不会有问题的,我这么用从来都没有出过错.

to DaHunHun(顺其自然吧)
如果记录为空,直接调用MoveFirst(),系统会直接发出消息"无当前记录".
yk_xiong 2003-08-06
  • 打赏
  • 举报
回复
m_pRecordset->Open(_variant_t(LPCTSTR(m_strSQL)),
_variant_t((IDispatch*)m_pConnection->GetConnection(), true),
CursorType, LockType, lOption);
m_pRecordset->MoveFirst();

结果还是一样的,还是没有用。
还有更奇怪的,同样的程序在别的机器上就是正确的???
不知道和ADO环境有什么关系
我要飞得更高 2003-08-05
  • 打赏
  • 举报
回复
to qly2010(晨曦):
如果记录为空,直接调用MoveFirst(),会怎么样?
我要飞得更高 2003-08-05
  • 打赏
  • 举报
回复
有人知道怎么连接远程数据库吗?请看:
http://expert.csdn.net/Expert/TopicView1.asp?id=2081964
丁淇石头 2003-08-05
  • 打赏
  • 举报
回复
太奇怪了吧?
你在哪儿调用的AdoEof()?Open后直接调用:
m_pRecordset->Open(_variant_t(LPCTSTR(m_strSQL)),
_variant_t((IDispatch*)m_pConnection->GetConnection(), true),
CursorType, LockType, lOption)
BOOL bTemp = m_pRecordset->AdoEof();
qly2010 2003-08-05
  • 打赏
  • 举报
回复
执行select以后当然记录的指针会移动到最后.因为指针要从第一条记录一直找到最后最后一条记录.你只要用一个MoveFirst()(也许是adoMoveFirst())回到记录集首即可.

4,011

社区成员

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

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