一、ADO连接Access(Windows Vista,VS2005)
1、 创建基于Dialog的MFC Application,工程名为IPVista。
2、 打开stdafx.h,添加以下代码:
#import
"c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")
//msado15.dll 一般在该路径下
3、 打开IPVista.h,在public添加如下代码:
_ConnectionPtr m_pConnection;
4、 打开IPVista.cpp,在CIPVistaApp::CIPVistaApp()
中添加以下代码:
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=quanhao.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库quanhao.mdb是否在当前路径下!");
return false;
}
//quanhao.mdb 为该工程所需的Access数据库
5、 在
IPVista.cpp中添加消息函数ExitInstance(),并在函数中添加如下代码:
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection=NULL;
6、 打开IPVistaDlg.h,定义查询表:
public:
_RecordsetPtr m_pRecordsetQuma;
7、 打开IPVistaDlg.cpp,声明外部变量:
extern CIPVistaApp theApp;
8、 打开IPVistaDlg.cpp,在OnInitDialog函数中添加如下代码:
m_pRecordsetQuma.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordsetQuma->Open("select * from quma",
theApp.m_pConnection.GetInterfacePtr(),
adOpenStatic, //adOpenDynamic为动态光标
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
9、 至此,IPVista工程与数据库quanhao.mdb中的查询表quma通过ADO连接完闭。
二、ADO的用法
1、Move
if(!m_pRecordsetQuma->BOF)
m_pRecordsetQuma->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
return false;
}
while(!m_pRecordsetQuma->adoEOF)
{
var=m_pRecordsetQuma->GetCollect("IDSpace");//表属性;var为_variant_t型
str=(LPCSTR)_bstr_t(var);
m_ctlIDWhere.AddString(str);//ComboBox
m_pRecordsetQuma->MoveNext();
}
m_pRecordsetQuam->Move(half);//half
为long型
2、 RecordCount
long mobCount;
mobCount=m_pRecordsetQuma->RecordCount;
//此时m_pRecordsetQuma应为adOpenStatic