用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))就要异常了!!

解决方案 »

  1.   

    执行select以后当然记录的指针会移动到最后.因为指针要从第一条记录一直找到最后最后一条记录.你只要用一个MoveFirst()(也许是adoMoveFirst())回到记录集首即可.
      

  2.   

    太奇怪了吧?
    你在哪儿调用的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();
      

  3.   

    有人知道怎么连接远程数据库吗?请看:
    http://expert.csdn.net/Expert/TopicView1.asp?id=2081964
      

  4.   

    to qly2010(晨曦):
    如果记录为空,直接调用MoveFirst(),会怎么样?
      

  5.   

    m_pRecordset->Open(_variant_t(LPCTSTR(m_strSQL)),
            _variant_t((IDispatch*)m_pConnection->GetConnection(), true),
            CursorType, LockType, lOption);
    m_pRecordset->MoveFirst();结果还是一样的,还是没有用。
    还有更奇怪的,同样的程序在别的机器上就是正确的???
    不知道和ADO环境有什么关系
      

  6.   

    如果你的程序在别的机器上运行正确,可能是C++本身的问题.你可以将Debug目录删除,然后再重新编译一次看看.应该不会有问题的,我这么用从来都没有出过错.to  DaHunHun(顺其自然吧)
       如果记录为空,直接调用MoveFirst(),系统会直接发出消息"无当前记录".