如新建一个名为 ex5-11的MFC基于对话框的程序
1.在StdAfx.h头文件的所有include语句下面添加如下一条语句
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename ("EOF","adoEOF")
在ex5-11Dlg.h 中添加 _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset;
2.为列表框添加变量 List
3.BOOL Cex511Dlg::OnInitDialog()中添加:
if(!AfxOleInit())
{
AfxMessageBox((CString)"COM Error!");
}
4.为按钮控件添加事件处理:
m_list.ResetContent();
int i=0;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
try{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F://SQL//ex5-11.mdb;","","",adModeUnknown); //加载数据库
m_pRecordset->Open("SELECT * FROM TAB1",(IDispatch *)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText); //索引 TAB1 表
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
i=i+1;
_variant_t theValue = m_pRecordset->GetCollect("ID"); // 需要获取的字段
if(theValue.vt != VT_NULL)
m_list.AddString((CString)(char *)_bstr_t(theValue));
m_pRecordset->MoveNext();
}
// m_pRecordset->Close();
// m_pConnection->Close();
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
//m_pRecordset = NULL;
//m_pConnection = NULL;