我用新建了一个基于对话框的应用程序在窗体中添加了一个ListControl控件和一个按钮在按钮的单击事件中添加了下列代码:
         CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command));
        pConn->ConnectionString="Provider=MSDAORA.1;User         ID=system;Data Source=orcl;Persist Security Info=False";
pConn->Open("","","",adConnectUnspecified);
        pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
pCmd->CommandText="select * from score";
pRst=pCmd->Execute(NULL,NULL,adCmdText);
while(!pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(
(_bstr_t)pRst->GetCollect("studentno"));
pRst->MoveNext();
}

pRst->Close();
pConn->Close();
pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize();
编译能通过,但运行时单击对应按钮是抛出异常!

解决方案 »

  1.   


    try
    {
    CoInitialize(NULL); 
    _ConnectionPtr pConn(__uuidof(Connection)); 
    _RecordsetPtr pRst(__uuidof(Recordset)); 
    _CommandPtr pCmd(__uuidof(Command)); 
            pConn->ConnectionString="Provider=MSDAORA.1;User        ID=system;Data Source=orcl;Persist Security Info=False"; 
    pConn->Open("","","",adConnectUnspecified); 
            pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn)); 
    pCmd->CommandText="select * from score"; 
    pRst=pCmd->Execute(NULL,NULL,adCmdText); 
    while(!pRst->rsEOF) 

    ((CListBox*)GetDlgItem(IDC_LIST1))->AddString( 
    (_bstr_t)pRst->GetCollect("studentno")); 
    pRst->MoveNext(); 
    } pRst->Close(); 
    pConn->Close(); 
    pCmd.Release(); 
    pRst.Release(); 
    pConn.Release(); 
    CoUninitialize(); 
             } 
    catch(_com_error e)
    {
    CString errormessage;
    errormessage.Format("数据库操作失败!\r\n错误信息:%s",e.ErrorMessage());
    AfxMessageBox(errormessage);//显示错误信息
    }把错误捕捉下,看看怎么了,看看怎么了。