用ado连接access 联系客服

发布时间 : 星期一 文章用ado连接access更新完毕开始阅读d1e0d2eb19e8b8f67c1cb962

用ado连接access 及相应的一些处理 收藏 vc知识库

用ado对数据库access的连接

11)用控制面板中的管理工具 添加.mdb的access数据库 在系统DSN中添加Driver do Microsoft access

(*。mdb)

1)-----------------------------------加入ADO支持库---------------------------- 在StdAfx.h中 //加入ADO支持库

#import \ no_namespace \\

rename (\

2)--------------------------------初始化com,创建ado连接等操作----------------------------- 在CWinApp.h即

在class CAdoRWAccessApp : public CWinApp中 // 定义ADO连接变量指针

_ConnectionPtr m_pConnection;

在CWinApp.h即

在BOOL CAdoRWAccessApp::InitInstance()中 声明AfxOleInit(); //初始化com,创建ado连接等操作 m_pConnection.CreateInstance(__uuidof(Connection));

3)--------------------打开本地Access库Demo.mdb--------------------------

在BOOL CAdoRWAccessApp::InitInstance()中 try {

//打开本地Access库Demo.mdb

m_pConnection->Open(\ \注意代码的拼写错误!!! }

catch(_com_error e) {

AfxMessageBox(\数据库连接失败,确认数据库Demo.mdb是否在当前路径下!\ return FALSE;

}

4)-----------------------------------创建记录集对象---------------------------------------

在newadoDlg.h中

即class CAdoRWAccessDlg : public CDialog中声明

_RecordsetPtr m_pRecordset;// 定义记录集变量指针

///初始化对话框

在newado.cpp中的OnInitDialog()函数中创建记录集对象 即BOOL CAdoRWAccessDlg::OnInitDialog()中

加入 m_pRecordset.CreateInstance(__uuidof(Recordset));//使用ADO创建数据库记录集

5)----------------------------------------打开表------------------------------------------

在newado.cpp中的OnInitDialog()函数中 即BOOL CAdoRWAccessDlg::OnInitDialog()中

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息, // 因为它有时会经常出现一些想不到的错误 try {

m_pRecordset->Open(\ // 查询

DemoTable表中所有字段

theApp.m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针 adOpenDynamic,

////注意声明全局变量CNewadoApp theApp为外部变量即extern CNewadoApp theApp;因为app是一个全局

类对象。所以要声明

adLockOptimistic, adCmdText); }

catch(_com_error *e) {

AfxMessageBox(e->ErrorMessage()); }

6)---------------------------------------------名称:OnReadAccess

//功能:用ADO从Access文件中读取相应数据并显示出来------------------------------------------ ---

void CAdoRWAccessDlg::OnReadAccess() {

//先关闭已经打开的记录集对象

m_pRecordset->Close();///m_pRecordset就在这个的外部定义 try {

m_pRecordset->Open(\ // 查询

DemoTable表中所有字段

theApp.m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针 adOpenDynamic, adLockOptimistic, adCmdText); }

catch(_com_error *e) {

AfxMessageBox(e->ErrorMessage()); }

ListData();////注意要对这个类进行声明

////做法:在CNewadoDlg右键点击 add menber function-》再定义类型为void的函 数

}

void CAdoRWAccessDlg::ListData() {

_variant_t var;

CString strName,strAge;

//效清空列表框

m_AccessList.ResetContent();//////注意m_AccessList需被定义声明

//先建立一个列表框Listaccess,-》改名-》声明一个列表框的成员变量

m_AccessList并 注明是控件control strName=strAge=\

//在ADO操作中建议语句中要常用try...catch()来捕获错误信息, //因为它有时会经常出现一些想不到的错误。 try {

if(!m_pRecordset->BOF)

m_pRecordset->MoveFirst(); else {

AfxMessageBox(\表内数据为空\ return; }

// 读入库中各字段并加入列表框中 while(!m_pRecordset->adoEOF) {

var = m_pRecordset->GetCollect(\ if(var.vt != VT_NULL)

strName = (LPCSTR)_bstr_t(var); var = m_pRecordset->GetCollect(\ if(var.vt != VT_NULL)

strAge = (LPCSTR)_bstr_t(var);

m_AccessList.AddString( strName + \

m_pRecordset->MoveNext();

}

// 默认列表指向第一项,同时移动记录指针并显示 m_AccessList.SetCurSel(0);

OnSelchangeListaccess();///前一步已经对这个列表框命名 现在要建立一个类向导; }

catch(_com_error *e) {

AfxMessageBox(e->ErrorMessage()); } } 7)-------------------------------------对列表框写编码———————————————————

———————

----------------------------------//名称:OnSelchangeListaccess---------------

//功能:当每次选择新的记录时,都会移动指针到新的记录位置并将值显示出来 ///////////////////////////////////////////////////////////////////////////// void CAdoRWAccessDlg::OnSelchangeListaccess() {

int curSel = m_AccessList.GetCurSel(); _variant_t var,varIndex;

if(curSel < 0) return;

try {

// 先将指针移向第一条记录,然后就可以相对第一条记录来随意移动记录指针 m_pRecordset->MoveFirst();

m_pRecordset->Move(long(curSel));