前几天大侠们告诉了我第一个问题,通过下面的方法可以请求到ADO接口。那么如何调用相应的方法来操作数据库?就是如何获得具体的一个接口,比如说_ConnectionPtr等等。
IDispatch* pDispatch=NULL;
CLSID clsid;

CoInitialize(0);
HRESULT hr = ::CLSIDFromProgID(L"ADODB.Connection", &clsid);
if(FAILED(hr)){return;}CoCreateInstance(clsid, NULL, CLSCTX_SERVER, IID_IDispatch, (void **)
&pDispatch);

if(FAILED(hr)){return;}

解决方案 »

  1.   

    CString m_strConnect.Format("Provider=OraOLEDB.Oracle.1;Password=user_password;Persist Security Info=True;User ID=user_id;Data Source=user_DATASource;");
    _RecordsetPtr m_prs;
    _ConnectionPtr m_pConnection;
    HRESULT hr = S_OK;
    try
    {
    hr = m_prs.CreateInstance(__uuidof(Recordset));
    if(FAILED(hr))
    {
    AfxMessageBox("记录集对象建立失败!",MB_ICONINFORMATION);
    return ;
    }
    BeginWaitCursor();
    m_strSQL = "select * from tableA";
    hr = m_prs->Open(_bstr_t(m_strSQL),(IDispatch*)m_pConnection,adOpenStatic ,adLockReadOnly,adCmdText);
    if(FAILED(hr))
    {
    AfxMessageBox("数据库查询失败!",MB_ICONINFORMATION);
    return ;
    }
    EndWaitCursor();
    }
    catch(_com_error e) ///捕捉异常
    {
    CString errormessage;
    errormessage.Format("错误信息:%s",(char*)(e.Description()));
    AfxMessageBox(errormessage, MB_ICONINFORMATION);///显示错误信息
    return;

    catch (CException err)
    {
    err.ReportError();
    return;
    }
    catch(...)
    {
    AfxMessageBox("未知错误!",MB_ICONINFORMATION);
    return;
    }
      

  2.   

    flybirdlee 
    编译的时候提示_RecordsetPtr没有定义?如何处理