按照孙鑫老师的Lesson20,做了个ADO连接数据库,结果runtime error。
按照别人的帖子进行修改倒编译过了,能运行,结果点击查询毫无反应,希望有经验的人事可以帮帮忙,本人新手,谢谢了。
代码:void CAdoDlg::OnBtnQuery()  
 {
try   
{   
   _ConnectionPtr pConn;
    pConn.CreateInstance("Connection");  
   _RecordsetPtr pRst;
    pRst.CreateInstance("ADODB.Recordset");  
CString strText="Provider=SQLOLEDB.1;Password=zhouzhi;Persist Security Info=True;User ID=sa;Initial Catalog=pubs;Data Source=ZZ";  
pConn->Open((_bstr_t)strText, "", "", adConnectUnspecified);pRst=pConn->Execute("select * from authors",NULL,adCmdText);   
while(!pRst->rsEOF)
{
   ((CListBox*)(GetDlgItem(IDC_LIST1)))->AddString(
   (_bstr_t)pRst->GetCollect("au_lname"));
      pRst->MoveNext();
}
 
pRst->Close(); 
pConn->Close();   
pRst.Release();   
pConn.Release();   
  CoUninitialize();   }   
catch(_com_error e)   
{   
  CString str = e.ErrorMessage();  
TRACE(str);  
}
}
谁能告诉我下,是哪里有问题,谢谢了。

解决方案 »

  1.   

    这个帖子里有很多例子
    你可以对照着看看
    http://topic.csdn.net/u/20100429/11/a1a68cd2-d942-4f6b-b387-69a130ec5888.html?68867
      

  2.   

    可以请问下,我这里哪里有问题吗?为什么单击OnBtnQuery()无法显示数据库表里问题?
      

  3.   

    在catch(_com_error e)里面设置断点,看是不是发生异常了。   
      

  4.   

    那表中没有数据?或程序没有进入while块里面?
      

  5.   

    表是SQL2000里自带的,我看了有数据,至于您说的WHILE进入没有,我不太懂,希望明示。。
      

  6.   

    while(!pRst->rsEOF)
    {
      //就是程序运行到循环里面没有
      ((CListBox*)(GetDlgItem(IDC_LIST1)))->AddString((_bstr_t)pRst->GetCollect("au_lname"));
      pRst->MoveNext();
    }
      

  7.   

    应该是没进去,我在WHILE设置断点了,但是还是能运行,您知道该怎么解决吗?
      

  8.   

    我还有个问题想请教您,就是我打个->那里边都有各种方法的那个提示框,我这个VC不显示,能问下在哪里设置下就会有比如打个点什么的提示语句吗?
      

  9.   

    没有进入循环说明rsEOF为投入true,你检查一下是不是没有查出数据来。
      

  10.   

    数据库连接了吗?查询sql语句正确吗?
      

  11.   

    初始化CoInitialize(NULL);