VC下的ADO编程入门
n 新建一基于对话框的应用程序zjy,在对话框上添加一个列表框和一个按钮,用ClassWizard给列表框添加一个变量m_list
n 在StdAfx.h头文件的所有include语句下面添加如下一条语句
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF","adoEOF")
n 在zjyDlg.h头文件处添加两个变量
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
n 在zjyDlg.cpp的BOOL CZjyDlg::OnInitDialog()的return TRUE;语句前添加如下语句
if(!AfxOleInit())
{
AfxMessageBox("COM Error!");
}
n 添加按钮的消息响应函数并写入下面代码
void CZjyDlg::OnButton1()
{
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=E:\\ActiveX 数据对象\\VC_ACCESS\\zjy\\MyDb1.mdb;","","",0);
m_pRecordset->Open("SELECT * FROM MyTable1",(IDispatch *)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
i=i+1;
_variant_t theValue = m_pRecordset->GetCollect("n1");
if(theValue.vt != VT_NULL)
m_list.AddString((char *)_bstr_t(theValue));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
m_pConnection->Close();
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
char str[32];
sprintf(str,"table have %d record",i);
AfxMessageBox(str);
m_pRecordset = NULL;
m_pConnection = NULL;
}
完成的功能就是把Access数据库中的某表的某一字段添加到列表框中。下一篇介绍把SQL SERVER数据库中的某表添加到列表视图中。
(完)