我新建了一个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);
出错,不知道大家有没有遇到过这个问题。
连接数据的程序是这样的:
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);
出错,不知道大家有没有遇到过这个问题。
有兴趣的话你可以参考一下
http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx
光这样能连接上数据库么。
要这样子:
pConn->Open(_bstr_t("Provider=MIcrosoft.Jet.OLEDB.4.0;Data source=exat2.mdb"),"","",NULL);
如果只是简单的查询
最后使用
pRecordset.CreateInstance (_uuidof(Recordset));
pRecordset->Open("="SELECT * FROM TEST",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if (!pRecordset->adoEOF)