我发现如果ADO打开的是经过ODBC的ORACLE连接,则Support(adAddNew)成功,但一样AddNew()失败,而现在的做法则Support(adAddNew)失败。
各位大虾,麻烦帮帮忙,先行谢过

解决方案 »

  1.   

    好象CSDN有这个帖子,就是不行,不知道是MS的BUG还是ORACLE的虫
      

  2.   

    不要用adOpenForwardOnly方式打开,改用adOpenKeyset.
    ...
    m_pRSTest->Open((LPCTSTR)strCmd,vNull,adOpenKeyset,adLockOptimistic,adCmdUnknown)
    ...
      

  3.   

    我试过了,adOpenKeyset也是一样
      

  4.   

    我使用adOpenStatic开发,
    然后使用代码:
     pSet->AddNew();
     pSet->PutCollect("ID",_variant_t(long(i+10)));
    我测试过, pass
      

  5.   

    我也试过,AddNew()好像对Oracle的支持有问题,但可以Execute一条insert的SQL语句。
      

  6.   

    >>yabbi(晴天公仔)按你说的修改如下:
    _bstr_t strConn = "Provider=MSDAORA.1;Password=pass;User ID=usr1;Data Source=GACRJXT;Persist Security Info=True";
    ...
         m_pRSTest->Open((LPCTSTR)strCmd,vNull,adOpenStatic,adLockOptimistic,adCmdUnknown);
    m_pRSTest->MoveFirst();
    m_pRSTest->AddNew();
    m_pRSTest->PutCollect("ID",_variant_t("4321"));
    m_pRSTest->Update();
    结果执行到m_pRSTest->AddNew();时报告:
    First-chance exception in test.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception.
    ODBC状态下可以,但ADO再走ODBC没有意义。
      

  7.   

    我才发现你用的是adCmdUnknown,还有就是strCmd用Select*...为什么不用table呢?
      

  8.   

    >>jazzrabbit(爵士兔)
    我改用adCmdText错误依旧
    之所以不用table,因为实际用的时候我是执行select field1,field3...
      

  9.   

    改用ODBC源连接数据库,就可以写操作拉。
    我也遇到同样问题,平常查询的话就用ORACLE专用连接
    如果写的话就改用ODBC源连接!