HRESULT hr;
//open connection
hr = m_conn.CreateInstance("ADODB.Connection");
hr = m_rst.CreateInstance("ADODB.Recordset");
try {        
                if(SUCCEEDED(hr)) 
        {
                    hr = m_conn->Open("Provider=MSDAORA.1;Password=sfis1;User ID=sfis1;Data Source=delltest;Persist Security Info=True","","",adModeUnknown);
            //"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\com.mdb"
                }
m_rst->Open("SELECT * FROM testid",_variant_t((IDispatch*)m_conn,true),adOpenDynamic,adLockOptimistic,adCmdText); 

                UpdateData(true);
        m_rst->AddNew();
        m_rst->PutCollect(_variant_t((long)0),_variant_t(m_strStart));
        m_rst->PutCollect(_variant_t((long)1),_variant_t(m_strEnd));
        m_rst->Update();
        m_rst->MoveFirst();
    
                m_strStart = m_rst->GetCollect(_variant_t((long)0)).bstrVal;
m_strEnd = m_rst->GetCollect(_variant_t((long)1)).bstrVal; 
UpdateData(FALSE);
        

        catch(_com_error e)///捕捉异常 
{   
           CString errormessage; 
   errormessage.Format("Error Message: %s",e.ErrorMessage()); 
   AfxMessageBox(errormessage);
}

解决方案 »

  1.   

    数据库指定肯定是正确的,可以瀏覽, 但不能AddNew, Delete & Update. 但直接調用Connection指針的Execute方法卻可以, 如:m_conn->Execute("insert into testid values('36','36')",&RstAffected,adCmdText).
       編譯沒問題, 在運行的時候會出現這樣的报错: 
                     Error Message: Unknown error 0x800A0CB3
       誰能幫我一把?
      

  2.   

    CString    str;m_rst->Open(str.AllocString(),_variant_t((IDispatch*)m_conn,true),adOpenDynamic,adLockOptimistic,adCmdText); 
      

  3.   

    试试
    m_conn->("Provider=OraOLEDB.Oracle.1;Password=sfis1;User ID=sfis1;Data Source=delltest;Persist Security Info=True","","",adModeUnknown);
    m_rst->Open("SELECT * FROM testid",_variant_t((IDispatch *) m_conn,true),adOpenStatic,adLockOptimistic,adCmdText);
    我运行通过了
      

  4.   

    To birdzxy(飞翔鸟):
    Thanks! 好象这样也不行, 可能不是这里的原因.
      

  5.   

    To Virtuoso:
    你的方法是對的, 這個問題已解決了. 但是我不太明白, "Provider=MSDAORA.1"与
    "Provider=OraOLEDB.Oracle.1"之間有什么不同?
      

  6.   

    好像在Provider=MSDAORA.1方式下oracle只支持只读的adOpenStatic CursorType.
      

  7.   

    在Provider=MSDAORA.1方式下oracle也支持插人、更新操作,只需要设置记录集的游标类型
    m_rst->CursorLocation = adUseClient