使用ADO连接数据库
1、导入存放ADO组件的库文件。在stdafx.h文件中加入下列语句:
#import "c:\program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile")
#include "icrsint.h"
ADO组件存放在msado15.dll文件中,导入该文件时,要重新定义EOF和BOF,以便与VC中ios.h、stdio.h中的EOF和BOF区别开来。
icrsint.h文件中包含了ADO控件的声明。
2、在应用程序类的InitInstance函数中加入:
AfxOleInit(); //初始化COM组件环境
3、为视图类增加成员:
_ConnectionPtr m_myConnection; //连接对象
_RecordsetPtr m_myRSStudent; //记录集
_RecordsetPtr m_myRS1; //记录集
4、在修改视图类的OnInitUpdate函数:
HRESULT hr;
try{hr = m_myConnection.CreateInstance("ADODB.Connection"); //创建连接实例if(SUCCEEDED(hr))hr =
m_myConnection->
Open("Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=db1.mdb;", "", "",adModeUnknown);
//打开连接,连接到数据库}
catch(_com_error e){
CString errormessage;
errormessage.Format("Connection failed\nInformation:%s",e.ErrorMessage());
AfxMessageBox(errormessage);}
m_myRSStudent.CreateInstance("ADODB.Recordset");
m_myRSStudent->Open(“select * from student”, //获取数据的SQL语句m_myConnection.GetInterfacePtr(), //记录集获取数据时使用的连接adOpenDynamic,adLockOptimistic,adCmdText);//动态集、优化锁、SQL命令形式
执行完这段代码后,数据库表student中的数据被提取到m_myRS所管理的内存区域。m_myRS1.CreateInstance("ADODB.Recordset");
m_myRS1->Open("select * from Class",
m_myConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
_variant_t vName; //变体数据类型,可以存放任意类型的数据
while(!m_myRS1->EndOfFile)
{vName = m_myRS1->GetCollect("ClassName");//获取字段内容m_TreeView.InsertItem((_bstr_t)vName); //填充TreeView
m_myRS1->MoveNext();}
m_ListView.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_ListView.InsertColumn(0,"学号",LVCFMT_CENTER,60);
m_ListView.InsertColumn(1,"姓名",LVCFMT_CENTER,60);
m_ListView.InsertColumn(2,"数学",LVCFMT_CENTER,60);
m_ListView.InsertColumn(3,"英语",LVCFMT_CENTER,60);
m_ListView.InsertColumn(4,"计算机",LVCFMT_CENTER,60);}