读书人

ADO连接SQL Serve2008的有关问题

发布时间: 2012-01-09 21:05:42 作者: rapoo

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(); 

读书人网 >VC/MFC

热点推荐