VC++下使用ADO访问Access数据库完整篇

VC++下使用ADO访问Access数据库完整篇2009年10月18 | 分类: 编程开发 | 3 条评论 | 标签: Visual Studio这次先整理一下ADO的全套流程方便有类似需求的网友参考。

实际上,根据天缘的经验,接口类编程只需要遵守人家的约定就可以了,很多做软件的网友也都是忙的很,没有时间一一深究。

1、在StdAfx.h中引入ADO类支持方法是在StdAfx.h中增加下面两句话:#include <comdef.h>//如果需要则添加本句#import "c:\program files\common files\system\ado\msado15.dll"no_namespace rename ("EOF", "adoEOF")2、初始化COM环境在MFC中可以用AfxOleInit()或CoInitialize(NULL),该函数一般放在InitInstance()历程里。

非MFC使用用CoInitialize(NULL)。

卸载COM环境使用CoUnInitialize(),一般放在主程序的析构函数里。

这样我们就会三个指针可用:_ConnectionPtr、_RecordsetPtr和_CommandPtr,分别代表:_ConnectionPtr接口返回一个记录集或一个空指针,通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,对于要返回记录的操作通常使用_RecordserPtr来实现。

而用 _ConnectionPtr操作时要想得到记录条数得遍历所有记录,用_RecordserPtr则不需要。

_RecordsetPtr指针是一个记录集对象。

可以对记录集提供了更多的控制功能。

它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给 _RecordsetPtr的connection成员变量,让它自己创建数据连接。

如果你要使用多个记录集,最好的方法是使用已经创建了数据库连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。

_CommandPtr指针接口返回一个记录集。

CommandPtr提供了一种简单方法来执行返回记录集的存储过程和SQL语句。

可以利用全局 _ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。

一次或少量数据库访问操作,一般是直接使用连接串,如果需要频繁访问数据库,涉及返回多个记录集,那么,建议同_RecordsetPtr用法一样,使用全局数据库连接后,再使用_CommandPtr 接口执行存储过程和SQL语句。

各指针的定义方法:_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;_CommandPtr m_pCommand;3、连接、关闭数据库1、连接数据库示例连接ACCESS,以昨天的FavorMan为例。

::CoInitialize(NULL);//数据库操作前先初始化COM环境CString strSQL; //配置初始连接串strSQL="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=blogurl.mdb;";strSQL=strSQL+"Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource=blogurl.mdb;"+"Jet OLEDB:Database Password="+//str为上面读到数据库路径信息! DB_PASSWRD_STRING+";"+"Persist Security Info=False;"; //注意一定需要输入四个\\\\才能表示"\\"//如果单独输入,必须形式为"\\\\Abc\\db\\blogurl.mdb"格式!//--连接数据库-----------------HRESULT hr;try{hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象if(SUCCEEDED(hr)){hr =m_pConnection->Open((_bstr_t)strSQL,"","",adModeUnknown);///连接数据库///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51; }}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误:%s!",e.ErrorMessage());AfxMessageBox(errormessage);///显示错误信息return FALSE;}2、关闭数据库if( m_pConnection->State )//如果连接有效m_pConnection->Close();m_pConnection = NULL;4、数据库访问_RecordsetPtr m_pRecordset;m_pRecordset.CreateInstance("ADODB.Recordset");try{//打开数据库m_pRecordset->Open("SELECT * FROM BlogUrl",m_pConnection.GetInterfacePtr(),//或使用_variant_t((IDispatch*)theApp.m_pConnection,true),,但需要extern声明theApp;adOpenDynamic,adLockOptimistic,adCmdText);//遍历读取while(!m_pRecordset->adoEOF)//adoEOF判断数据库指针是否已经到结果集末尾;BOF判断是否在第一条记录前面{vID =m_pRecordset->GetCollect("ID");//这里已经读到当前记录的ID,需要进行非空等判断,非空之后就可以处理,比如添加到列表框等。

//....m_pRecordset->MoveNext();}m_pRecordset->Close();//关闭记录集}catch(_com_error error){CString errorMessage;errorMessage.Format("%s",(LPTSTR)error.Description()); AfxMessageBox(errorMessage);}取得某字段的值有两种办法,一种是指定该字段名,另一种是指定该字段的ID 编号,从0开始。

假设上文的ID是从0开始,那么可以采用:m_pRecordset->GetCollect(_variant_t(long(0));也可以采用:pRecordset->get_Collect("ID");其它索引值读取类似处理。

附一些常用的执行语法:1、添加记录a、调用m_pRecordset->AddNew();b、调用m_pRecordset->PutCollect("ID",vID);给ID字段赋值c、调用m_pRecordset->Update();//确认并刷新入库2、修改记录方法类似添加记录,只是起初按照查询指定记录打开接口,比如SELECT * FROM ulist where ID=%d形式,不需要m_pRecordset->AddNew();,直接使用PutCollect("ID",vID)。

3、删除记录删除记录只需要把记录指针移动到要删除的记录上,然后调用m_pRecordset->Delete(adAffectCurrent)移动到指定记录上也有两种方法,一种直接使用查询指定记录(需要唯一字段)方式定位,另一种是使用Move(index)方式。

下面例子是使用Move方式到指定记录。

try{m_pRecordset->MoveFirst();//如果是采用SELECT * FROM ulist where ID=5方式打开数据库连接则不需要本句m_pRecordset->Move(5);//假设删除第5条记录,如果是采用SELECT * FROM ulist where ID=5方式打开数据库连接则不需要本句m_pRecordset->Delete(adAffectCurrent);m_pRecordset->Update();}catch(_com_error error){CString errorMessage;errorMessage.Format("%s",(LPTSTR)error.Description());AfxMessageBox(errorMessage);}4、_CommandPtr用法参考a、_CommandPtr指针初始化m_pCommand->ActiveConnection = m_pConnection;// 将库连接赋于它,或单独再创建也可以,根据实际需要定m_pCommand->CommandText = "SELECT * FROM BlogUrll";b、_CommandPtr与_RecordsetPtr配合读取记录集m_pRecordset = m_pCommand->Execute(NULL, NULL,adCmdText);//执行SQL语句,返回结果记录集c、直接使用_ConnectionPtr执行SQL语句m_pConnection->Execute( _bstr_t CommandText,VARIANT * RecordsAffected,long Options )例如:m_pConnection->Execute("UPDATE BlogUrl SET ID= 1 WHERE ID =5",&RecordsAffected,adCmdText);5、遍历数据库中所有表名m_pRecordset = m_pConnect->OpenSchema(adSchemaTables);while(!(m_pRecordset ->adoEOF)){_bstr_t tblname =m_pRecordset->Fields->GetItem("TABLE_NAME")->Value;//获取表格_bstr_t tbltype =m_pRecordset->Fields->GetItem("TABLE_TYPE")->Value;//获取表格类型//这里可以对表格类型进行判断,判断后即可处理tblnameif (!strcmp(tbltype ,"TABLE")){AfxMessageBox(tblname);}m_pRecordset->MoveNext();}m_pRecordset->Close();6、遍历一个表中的所有字段//方法1:m_pRecordset = m_pConnect->OpenSchema(adSchemaColumns);while(!(m_pRecordset ->adoEOF)){_bstr_t colname =m_pRecordset->Fields->GetItem("COLUMN_NAME")->Value;//获取字段名AfxMessageBox(colname);m_pRecordset->MoveNext();}m_pRecordset->Close();//方法2:FieldsPtr pFields = NULL;HRESULT hr = m_pRecordset->get_Fields (&pFields);//得到记录集的字段集if(!SUCCEEDED(hr)) return;int iColCount;pFields->get_Count(&iColCount);//字段总数BSTR bstrColName;for(int i=0;i<iColCount;i++)//按记录集的各字段循环{//pFields->GetItem(_variant_t(i))->get_Name(&bstrColName);pFields->Item(_variant_t(i))->get_Name(&bstrColName);//获得字段名字CString csName=bstrColName;//pField->Item[i]->get_Type(&fType);//获取字段类型//pField->Item[i]->get_DefinedSize(&lSize);//获得字段的大小AfxMessageBox(csName);}if(NULL != hr)tblfields ->Release();//释放指针7、常用数据格式转换_variant_t var;BSTR bvar;CString csVar;_bstr_t bstr;_variant_t 转化为long型: (long)var;_variant_t转化为 CString型: csVar= (LPCSTR)_bstr_t(var);CString转化为_variant_t型: _variant_t(csVar);或(LPTSTR)(LPCTSTR)csVar;CString转化为BSTR型: bvar= csVar.AllocSysString(); BSTR转化为CString型:csVar= (LPCSTR)bvar;CString转化为_bstr_t型: bstr = (_bstr_t)csVar;_bstr_t 转化为CString型:csVar= (LPCSTR)bstr;。

合集下载

用ADO对象访问Access数据库的方法

用ADO对象访问Access数据库的方法

ASP与网络数据库学习报告学院:专业:姓名:学号:成绩:二0一 0 年十一月用ADO对象访问Access数据库的方法ADO称为“Active数据对象”,是基于组件的数据库编程接口。

ADO实际是一种提供访问各种数据类型的连接机制,是一个与编程语言无关的COM(Component Object Model)组件系统。

ADO设计为一种极简单的格式,可以方便地连接任何符合ODBC标准的数据库。

在数据库的应用中,使用ADO编写的应用程序可以存取Internet任何地方的数据。

而我们通常用ADO的Connection对象、Command对象、Recordset对象来创建数据库。

而Acesss 数据库是目前应用比较广泛的桌面型数据库,广泛应用于各种小型管理信息系统中。

现在我们就来创建一个“网上留言”数据库以详细理解用ADO对象访问Access数据库的方法。

一、创建背景随着internet在中国的迅速发展,人们日常生活中越来越多地使用新技术来为自己的工作和学习服务。

在众多Internet关联功能中,有一项新的业务正成为所有用户所津津乐道的交流方式,这就是网上留言。

根据调查现在网民使用现状,网上留言板的使用百分比居前列。

二、数据库设计:1.首先创建一个Access 2003数据库为onlineword.mdb,分别设计以下两个表:reply表:字段名意义字段类型reid 回复者信息主键数字reply 回复者留言内容文字retime 留言时间日期leave表:字段名意义字段类型Id 留言者信息主键数字name 留言者姓名文字sex 性别文字ip ip地址数字os 操作系统文字qq qq号数字mail 邮箱地址数字addtime 添加时间日期body 留言内容文字ie ie类型文字2.建一个文件conn.asp用于链接打开当前目录下的onlineword.mdb数据库。

代码如下:<% set conn=server.createobject("ADODB.Connection")Conn.open"Provider=Mcorosoft.jet.oledb.4.0;Data Source="& server.MapPath("onlineword.mdb")%>3.用connection对象在数据库的reply表中添加一条记录(插入语句),建一个文件:insert.asp代码如下:<!--include file="conn.asp"--><% sql1="insert into reply( reid,reply,retime) values(‘1’,’谢;谢’,’10/11/12’)"conn.execute.sql1conn.closeset.conn=nothing%>4.用对象显示表中记录,在当前目录下,建一个show.asp文件,代码如下:<!--include file="conn.asp"--><% set rec=server.CreateObject("ADODB.RecordSet")Sql2="select * from reply where reid="& rs("id")' & " order by reid desc"rec.open sql2,conn,1,1%><table width="100%"><% do while not rec.eof %><tr><td><%=rs(reid) %></td></tr><tr><td><%=rs(reply) %></td></tr><tr><td><%=rs(retime) %></td></tr><% rec.movenextwendrec.closeset rec=nothing%></table>三、其他操作打开管理员回复信息数据库,开始调用其中内容。

VC中ADO操作Access数据库的实现

VC中ADO操作Access数据库的实现

VC中ADO操作Access数据库的实现
陈祖义;陶忠刚
【期刊名称】《计算机光盘软件与应用》
【年(卷),期】2010(000)010
【摘要】本文简要介绍了在VC6.0中使用ADO操作Access数据库的基本步骤和程序代码的实现,并列举出了关键的实例代码.
【总页数】1页(P150)
【作者】陈祖义;陶忠刚
【作者单位】空军第一航空学院,河南信阳,464000;空军第一航空学院,河南信阳,464000
【正文语种】中文
【中图分类】TP311.56
【相关文献】
1.在VC++中使用ADO方式对ACCESS数据库进行操作 [J], 范晶
2.在VC#.NET中利用实现树视图浏览编辑数据库 [J], 钟卫东
3.在VC中利用ADO技术操作数据库中的BLOB数据 [J], 王井阳;张晓明;秦敏;杨奎河;王晓红
4.在 VB6.0中通过宏操作实现文本文件到Access数据库的导入 [J], 吴恒亮
5.ADO数据库技术及微机线路保护通信规约在上位机开发中的VC++实现 [J], 刘小斌;杨年兴;马军弟;王艳玲;李梦达
因版权原因,仅展示原文概要,查看原文内容请购买。

ADO对象操作Access数据库关键技术

ADO对象操作Access数据库关键技术

批量处理数据:将多个操作合并为一个 事务,减少数据库操作的次数和时间
使用索引:为经常查询的字段建立索引, 提高查询效率
优化数据库设计:合理设计数据库结构, 减少数据冗余和复杂度
错误处理策略建议
捕获异常:使用Tr y...Catch语句捕获异常,确保程序正常运行 错误日志记录:记录错误信息,方便后续排查和解决问题 错误提示:提供友好的错误提示信息,帮助用户快速定位问题 避免重复操作:在发生错误后,避免重复执行可能导致错误的操作
ADO对象操作 Access数据库关键 技术
单击此处添加副标题
汇报人:
目录
添加目录项标题
ADO对象操作Access数据 库
示例代码展示
ADO对象概述 关键技术解析 注意事项与最佳实践
01
添加章节标题
02
ADO对象概述
ADO对象定义
ADO(ActiveX Data Objects):是一种用于访问数据库的对象模型 ADO是基于COM(组件对象模型)的,因此可以在各种编程语言中使用 ADO提供了与数据库交互的接口,可以执行SQL语句、读取数据等操作 ADO对象包括Connection、Recordset、Command等,用于与数据库进行交互
ADO对象模型
ADO对象模型
ADO对象的主 要组件
ADO对象的主 要方法
ADO对象的主 要属性
ADO对象与数据库连接
ADO对象与数据库连接 ADO对象的主要组件 ADO对象的使用方法 ADO对象与数据库的交互过程
03
ADO对象操作 Access数据库
建立数据库连接
使用ADO对象操 作Access数据库 需要先建立数据 库连接
获取结果集示例

VC+ADO+ACCESS登陆界面实现

VC+ADO+ACCESS登陆界面实现

and
m_ado.ExitConnect(); }
2.12 将数据库文件放置到 VC 程序目录下
{ e.Description(); } return m_pRecordset; }
2.6 插入一个新的对话框资源
ID:IDC_EDIT_UID ID:IDC_EDIT_PWD
ID:IDOK
ID:IDCANCEL
2.7 为登陆对话框新增一个 CLOGIN 类,选中 ResourceView 中的“IDD_LOGIN”->菜单栏 “View->ClassWizard...” ,在弹出的对话框中选择“Create a new Class”,单击“OK” ,在弹出 的对话框输入“CLOGIN”类名
void CAdo::ExitConnect() { if(m_pRecordset != NULL) { m_pRecordset->Close(); } if(m_pConnection != NULL) { m_pConnection->Close(); }
} void CAdo::Execute(_bstr_t strSQL) { try { if(m_pConnection == NULL) { OnInitADO(); } m_pConnection->Execute(strSQL,NULL,adCmdText); } catch(_com_error e) { e.Description(); } } _RecordsetPtr& CAdo::GetRecordset(_bstr_t strSQL) { try { if(m_pConnection == NULL) { OnInitADO(); } m_pRecordset.CreateInstance(__uuidof(Recordset)); m_pRecordset->Open(strSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOpti mistic,adCmdText); } catch(_com_error e)

Visual C++环境下ADO控件访问access数据库

Visual C++环境下ADO控件访问access数据库

Visual C++环境下ADO控件访问数据库DBGrid数据表格控件以其短小精悍而深受大家的喜爱,但其如何在Visual C++中使用却很少有文章提及,本文将VC下使用DBGrid的具体步骤简要地介绍给大家。

一.前期准备为了实现DBGrid控件的自动捆绑,我们需要建立一个数据库和与之关联的数据源,本例中我们用Access建立数据库mydata.mdb,在数据库中新建一张表users,包含三个字段username,address,email,并输入多条记录。

在控制面板ODBC数据源中建立名称为test的系统DSN(注意是系统DNS非用户DNS),并将其指向mydata.mdb二.创建工程新建一个基于对话框的MFC AppWizard (exe)工程,取名为GridTest,并在AppWizard的第2步中确认已经提供ActiveX控件支持。

三.插入控件我们需要插入Microsoft RemoteData Control与DBGrid Control两个控件,方法如下:1)选择菜单->Project->Add to Project->Components and Controls Gallery2)在部件选择对话框中进入Registered ActiveX Controls3)选择Microsoft RemoteData Control ,单击Insert按钮,确认后对类进行配置(可以按默认),我们不做任何修改单击OK按钮,插入完成。

以同样的步骤,插入DBGrid Control控件。

4)回到VC工作区,我们在ResourceView中选择GridTest对话框模板(即ID号为IDD_GRIDTEST_DIALOG的对话框模板)此时我们发现在Controls工具条中已经新增了两个按钮,分别表示刚才插入的两个控件。

5)现在我们在模板中画出这两个控件,如图所示:四.更改控件属性鼠标右键单击RemoteData Control控件,在右键菜单中选择Properties,弹出属性对话框,在Control选项卡中选择数据源test,在SQL中输入SQL语句例如:select * from users如下图所示:用同样的方法我们打开DBGrid控件的属性对话框。

VC 使用ADO连接数据库

VC   使用ADO连接数据库

一、ADO概述ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。

ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。

ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。

ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。

之所以称为 ADO,是用了一个比较熟悉的暗喻,OLE 自动化接口。

OLE DB是一组”组件对象模型”(COM) 接口,是新的数据库低层接口,它封装了ODBC的功能,并以统一的方式访问存储在不同信息源中的数据。

OLE DB是Microsoft UDA(Universal Data Access)策略的技术基础。

OLE DB 为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。

也就是说,OLE DB 并不局限于 ISAM、Jet 甚至关系数据源,它能够处理任何类型的数据,而不考虑它们的格式和存储方法。

在实际应用中,这种多样性意味着可以访问驻留在 Excel 电子数据表、文本文件、电子邮件/目录服务甚至邮件服务器,诸如 Microsoft Exchange 中的数据。

但是,OLE DB 应用程序编程接口的目的是为各种应用程序提供最佳的功能,它并不符合简单化的要求。

您需要的API 应该是一座连接应用程序和OLE DB 的桥梁,这就是 ActiveX Data Objects (ADO)。

二、在VC中使用ADO(开发步骤如下:)1、引入ADO库文件使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。

代码如下所示://用#import引入ADO库文件#import "c:\program files\common files\system\ado\msado15.dll" \no_namespaces \rename("EOF" adoEOF")这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常数EOF改名为adoEOF。

使用ADO操作Access数据库

使用ADO操作Access数据库ADO对象1、Access内嵌的VBA是用ADO技术开发数据库应用的主要工具,ADO是目前Microsoft通用的数据访问技术;2、ADO对象模型包括:Connection、Recordset、Record、Command、Parameter、Field、Property、Stream、Error九个对象;3、主要的ADO对象介绍:1)Connection对象:ADO对象模型中的最高级对象,用来实现应用程序与数据源的连接;2)Command对象:主要在VBA中使用SQL语句访问、查询和修改数据库中的数据,实现Recordset对象无法实现的操作(数据表级别的操作),可以使用DoCmd代替;3)Recordset对象:ADO最为常用的、重要的对象,可以访问表和查询对象,返回的记录储存在Recorderset对象中,主要执行的操作:①查询数据表中的数据;②在数据表中添加数据;③更新数据表中的数据;④删除数据表中的特定数据;在Access中引用ADO对象1、Access引用ADO的步骤:①声明、初始化Connection对象;②创建Recordset对象,编程完成各种操作;③关闭ADO对象;2、声明、初始化Connection对象'声明Connection对象:一般使用cn做为变量的命名前缀;Dim coName As ADODB.Connection'初始化Connection对象,连接当前数据库;Set cnName = CurrentProject.Connection3、声明和打开Recordset对象1)声明、初始化Recordset对象Dim rsName As ADODB.Recoresetset rsName = new ADODB.Recordset2)打开一个Recordset对象使用Recordset的Open方法可以打开数据表、查询对象、或直接引用SQL查询语句4、关闭Recordset和Connection对象rsName.ClosecnName.CloseSet rsName = NothingSet cnName = Nothing通过Recordset对象引用记录字段1、引用字段的方法有2种:直接在记录集对象中引用字段名称;使用记录集对象的Fields(n)属性引用;Code = rsName!字段名'引用该字段的第一条记录Code = rsName.Field(n)'引用该字段的第n条记录,n从0开始,可以用循环输出需要量的记录2、如果记录集字段包含空格、或者是一个保留字,则引用时必须将该字段用[ ]括起来;通过Recordset对象浏览记录1.Recordset记录集对象提供了4种方法浏览记录2、BOF、EOF属性分别记录指针是否在文件开始、文件末尾;如果记录集指针指向某记录时,BOF和EOF都为false;'添加一个窗体部件的按钮事件:浏览下一条记录Priavte Sub ComomndNext_Click()rsDemo.MoveNextIf rsDemo。

VC与ADO数据库操作1

VC与ADO数据库操作学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了。

重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的!一、ADO简介ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,请不必为此担心,即使你对OLE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO都要容易使用,【1】为工程做准备建一个基于对话框的工程,名字叫PlaceName。

加入一个ListControl控件,ID改成IDC_RESULT,顺便点一下Styles选项卡,把View改成Report,你可以看到对话框里的ListControl控件的样子已经变成带字段名的报表格式了。

右击它,用ClassWizard添加成员变量,名字为m_LisCtrlResult。

按照上面的程序界面,加入一个编辑框(输入SQL语句用的),同上面添加m_LisCtrlResult 成员变量一样,加入一个CString变量,名字为m_SqlText,还有一个“查询”按钮,把它叫为Query,双击它一下,VC会自动为它加入消息和函数的,名字也叫OnQuery(),等一下我们就用着那个函数的。

看到我们SpaceSoft的标志不?把你的照片换成BMP格式的,放上去吧!定义一下要用着的变量:class CPlaceNameDlg : public CDialog{// Constructionpublic:_RecordsetPtr m_pRecordset; //定义一个RecordsetPtr对象,用来储存读出来的表HRESULT hr; //查出后的表Fields* fields; //储存查出后的字段BSTR bstrColName; //储存一下字段名long nRstCol; //SQL语句一共查出了几个字段?nRstCol个!CString strColName[100]; //把查出的字段名转换成常见常用的CString类型,放在这个数组里边……}//储存从数据库读出的数据,variant 变量能够存储所有系统定义类型的数据。

VC++使用ADO开发ACCESS数据库

VC++使用ADO开发ACCESS数据库VC++使用ADO开发ACCESS数据库本文通过实例演示如何在VC++中使用ADO进行ACCESS数据库编程,并对涉及到的几个概念进行详细解释。

本文不对ADO和ACCESS的基本概念进行详细解释,主要包括以下内容:第一部分 ADO和ADOX到底是什么,二者的作用和区别建立数据库第二部分 ADOX创建ACCESS数据库第三部分ADO创建ACCESS数据库的表第四部分使用_ConnectionPtr接口开发ACCESS数据库第五部分使用_RecordsetPtr接口开发ACCESS数据库第一部分ADO和ADOX到底是什么,二者的作用和区别ADO是Microsoft 最新推出的数据库访问的高层软件接口。

它和Microsoft 以前的数据库访问接口DAO、RDO相比具有更大的灵活性,使用也更方便,开发效率大为提高。

ADOX是核心ADO对象的扩展库。

它提供的附加对象可用于创建、修改和删除模式对象,如表和过程。

要使用ADOX,则应建立对ADOX类型库的引用。

ADOX 库文件名为 Msadox.dll。

通俗地讲,ADO是访问数据库的一种接口,可以使用它方便地进行数据库编程。

而ADOX是微软对ADO功能的扩展,比如:可以ADOX创建数据库(而ADO 没有创建数据库的功能)。

第二部分ADOX创建ACCESS数据库用ADOX创建access数据库方法很简单,只需要创建一个Catalog对象,然后调用它的Create方法就可以了。

例程ADOXCreateDatabase演示如何使用ADOX创建一个ACCESS数据库。

打开VC++ 6.0,新建一个基于对话框的工程ADOXCreateDatabase。

在对话框IDD_ADOXCREATEDATABASE_DIALOG中添加一个编辑框IDC_DBNAME和一个按钮IDC_BTN_CREATE,编辑框用以输入数据库名称。

使用ClassWizard给编辑框创建一个CString变量m_dbName。

VC++中使用ADO方式操作ACCESS数据库

VC++中使用ADO方式操作ACCESS数据库ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、RDO都要容易使用,并不失灵活性。

本文详细地介绍在Visual C++开发环境下如何使用ADO来进行数据库应用程序开发,并给出示例代码。

为了使读者朋友都能测试本例提供的代码,我们采用Access数据库,您可以直接在我们提供的示例代码中找到这个test.mdb。

程序编译运行后的效果如图一所示:图一、ADO操作ACESS数据库的界面效果图一、实现方法万事开头难,任何一种新技术对于初学者来说最重要的还是"入门",掌握其要点。

让我们来看看ADO 数据库开发的基本流程吧!它的基本步骤如下:(1)初始化COM库,引入ADO库定义文件(2)用Connection对象连接数据库(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。

(4)使用完毕后关闭连接释放对象。

下面我们将详细介绍上述步骤并给出相关代码。

1、COM库的初始化我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:BOOL CADOTest1App::InitInstance(){AfxOleInit();......}2、用#import指令引入ADO类型库为了引入ADO类型库,需要在项目的stdafx.h文件中加入如下语句:#import "c:program filescommon filessystemadomsado15.dll"no_namespace rename("EOF","adoEOF")这一语句有何作用呢?其最终作用同我们已经十分熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档