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);
}
试试
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);
我运行通过了
好像在Provider=MSDAORA.1方式下oracle只支持只读的adOpenStatic CursorType.
在Provider=MSDAORA.1方式下oracle也支持插人、更新操作,只需要设置记录集的游标类型
m_rst->CursorLocation = adUseClient