我用新建了一个基于对话框的应用程序在窗体中添加了一个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();
编译能通过,但运行时单击对应按钮是抛出异常!
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();
编译能通过,但运行时单击对应按钮是抛出异常!
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);//显示错误信息
}把错误捕捉下,看看怎么了,看看怎么了。