ADO连接SQL Serve2008的问题?
下面是我连接的代码,当我按OK连接的时候对话框卡死了,怎么回事?
void CDBSETTING::OnOk()
{
// TODO: Add your control notification handler code here
UpdateData();
dbaddress=m_dbaddress;
::CoInitialize(NULL);
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
m_pConnection.CreateInstance("ADODB.Connection");
m_pRecordset.CreateInstance("ADODB.Connection");
CString strConn;
CString strServer="127.0.0.1";
CString dbName="stock";
CString user="";
CString psw="";
strConn.Format("driver={SQL Server}; Server=%s; DATABASE=%s; UID=%s; PWD=%s", strServer, dbName, user, psw);
m_pConnection->Open((_bstr_t)strConn, "", "", adModeUnknown);
m_pRecordset->Open("select * from stock ",
_variant_t((IDispatch*)m_pConnection, true),
adOpenStatic, adLockOptimistic, adCmdText);
while(!m_pRecordset->adoEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(
(_bstr_t)m_pRecordset->GetCollect("DayBaseDataTable"));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
m_pConnection->Close();
m_pRecordset.Release();
m_pConnection.Release();
CoUninitialize();
谁能帮我看看代码哪里出错了,谢了!
[解决办法]
- C/C++ code
void CDBSETTING::OnOk(){ // TODO: Add your control notification handler code here UpdateData(); dbaddress=m_dbaddress; ::CoInitialize(NULL); _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; m_pConnection.CreateInstance("ADODB.Connection"); m_pRecordset.CreateInstance("ADODB.Connection"); CString strConn; CString strServer="127.0.0.1"; CString dbName="stock"; CString user=""; CString psw=""; try { strConn.Format("driver={SQL Server}; Server=%s; DATABASE=%s; UID=%s; PWD=%s", strServer, dbName, user, psw); m_pConnection->Open((_bstr_t)strConn, "", "", adModeUnknown); m_pRecordset->Open("select * from stock ", _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); while(!m_pRecordset->adoEOF) { ((CListBox*)GetDlgItem(IDC_LIST1))->AddString( (_bstr_t)m_pRecordset->GetCollect("DayBaseDataTable")); m_pRecordset->MoveNext(); } m_pRecordset->Close(); m_pConnection->Close(); m_pRecordset.Release(); m_pConnection.Release(); } catch(_com_error& e) { ASSERT(FALSE); CString str; str.Format("文件名称: %s \n 所在代码行 : %d 执行SQL语句失败 错误原因 %s" , __FILE__ , __LINE__ , (LPCSTR)e.Description()); TRACE(str); AfxMessageBox(str); AfxGetMainWnd()->PostMessage(WM_CLOSE); } CoUninitialize();