我新建了一个MFC单文档程序,在创建时没有考虑到数据库,现在希望通过ADO连接数据库,通过新建一个对框框,实现数据库数据的显示。通过点击菜单,实现对话框的显示,点击对话框中的按钮,实现连接数据库,并在列表框中显示数据。但是程序出错。
连接数据的程序是这样的:
         CoInitialize(NULL);    //初始化COM组件
_ConnectionPtr pConn(__uuidof(Connection));    //实例化一个connection对象pConn
_RecordsetPtr pRst(__uuidof(Recordset));    //实例化一个Recordset对象pRst
_CommandPtr pCmd(__uuidof(Command));    //实例化一个Command对象pCmd

pConn->ConnectionString="Provider=MIcrosoft.Jet.OLEDB.4.0;Data source=exat2.mdb";
//通过pConn对象连接字符串,连接到ACCESS数据库,这里ACCESS数据库在C根目录下

pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
pCmd->CommandText="SELECT * FROM TEST";    //通过pCmd对象访问数据库
pRst=pCmd->Execute(NULL,NULL,adCmdText);
while(!pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("NAME"));
//把数据库中学号这列的内容放入IDC_LIST1的LIST控件中
pRst->MoveNext();    //下移一个
}

pRst->Close();    //关闭对象
pConn->Close();
pCmd.Release();    //释放对象
pRst.Release();
pConn.Release();
CoUninitialize();    //卸载COM组件提示的出错是:
 
runtime ERROR调试时发现这步 pRst=pCmd->Execute(NULL,NULL,adCmdText);
出错,不知道大家有没有遇到过这个问题。

解决方案 »

  1.   

    这有一个例子
    有兴趣的话你可以参考一下
    http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx
      

  2.   

    pConn->ConnectionString="Provider=MIcrosoft.Jet.OLEDB.4.0;Data source=exat2.mdb";
    光这样能连接上数据库么。
    要这样子:
    pConn->Open(_bstr_t("Provider=MIcrosoft.Jet.OLEDB.4.0;Data source=exat2.mdb"),"","",NULL);
      

  3.   

    _CommandPtr最好用来执行带参数的储存过程的
    如果只是简单的查询
    最后使用
    pRecordset.CreateInstance (_uuidof(Recordset));
    pRecordset->Open("="SELECT * FROM TEST",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
    if (!pRecordset->adoEOF)