现在我编写VC++ ADO的动态连接库,不用COM,供VC、VB程序同时使用。在用SELECT ...  FOR UPDATE锁定Oracle数据库的记录时,VC 程序调试无效,而VB却可以。为什么呢?一点头绪都没有...

解决方案 »

  1.   

    用什么方式打开的?locking Mode=1?
      

  2.   

    用的是:
    (*pADO_Session->m_pRecordsetPtr)->Open(strSQL,
    (*pADO_Session->m_pConnectPtr).GetInterfacePtr(),
    adOpenDynamic, adLockOptimistic, adCmdText);
    或者是:
    (*pADO_Session->m_pConnectPtr)->Execute(strSQL, NULL, adCmdText|adExecuteNoRecords);用SQL语句中的FOR UPDATE 进行锁定。
    你说的“locking Mode=1”我并不懂。
      

  3.   

    改为悲观锁定之后,VC程序锁定纪录后,SQL PLUS会不能锁定,问题是:SQL PLUS 或VB程序锁定纪录后,VC程序像个瞎子,RETURN 锁定成功,然后在更新语句处阻塞了。CursorLocation = adUseClient;
      

  4.   

    结贴:
    将oracle升级至8.1.7版,问题解决。
    同时也怀疑原来的Oracle8.1.6是盗版,但还没有确认。