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)}
1.可以使用ADO连接数据库,具体的知识还比较的多,所以建议随便找本mfc的书本看看,可以直接使用mfc向导里的选项,非常方便的。2.使用odbc连接数据库,较于复杂,而且速度明显无ado快(顺便吐槽一下odbc在windows程序开发中就是鸡肋,从来都很少有人用的。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)