第十二章 ADO编程技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第十二章:ADO编程技术1第十二:ADO编程技术学习目标ADO编程技术简介ADO对象结构使用ADO控件访问数据使用ADO对象访问数据第十二章:ADO编程技术2ADO编程技术简介三种数据库数据库访问技术介绍:ODBC(OpenDatabaseConnectivity,开放式数据库连接),是一种用来在相关或不相关的数据库管理系统(DBMS)中存取数据的标准应用程序接口(API)。DAO(DataAccessObject)即数据访问对象集,是Microsoft提供的基于一个数据库对象集合的访问技术。和ODBC一样,他们都是WindowsAPI的一部分,可以独立于(DBMS)进行数据库的访问。DAO跟ODBC的区别是:访问机制不同!ODBC工作依赖于数据库制造商提供的驱动程序。使用ODBCAPI的时候,Windows的ODBC管理程序,把对数据库的访问请求传递给正确的驱动程序,驱动程序再使用SQL语句指示DBMS完成数据库访问工作。ADO则绕开中心环节,直接使用数据库引擎(MicrosoftJetDatabaseEngine)提供的数据库访问对象集进行工作。速度比ODBC快。ADO(ActiveXDataObject)是Microsoft数据库应用程序开发的新接口,是建立在OLEDB之上的高层数据库访问技术,提供了简单易用的访问各种数据资源(包括关系型和非关系型)。是相对比较新的数据库访问技术。ADO是Microsoft数据库应用程序开发的新接口,是建立在OLEDB之上的高层数据库访问技术,请不必为此担心,即使你对OLEDB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBCAPI、DAO、RDO都要容易使用,并不失灵活性。本文将详细地介绍在VC下如何使用ADO来进行数据库应用程序开发。第十二章:ADO编程技术3ADO对象结构ADO是一个面向对象的组件库,用ADO访问数据库,其实就是利用ADO对象来操作数据如的数据,所以我们首先要撑握ADO的对象连接对象(connection):连接用于与数据库建立连接,执行查询及进行事务处理。在连接时必须要指定使用何种数据库的OLEDB供应者命令对象(Command):可以执行数据库操作命令(如查询,修改,增加和删除)。用命令对象执行一个查询字串,可以返回一个记录集合。记录集对象(Recordset):用于表示查询返回的结果集,它可以在结果集中增加,删除,修改和移动刻录。当建立一个记录集时,一个游标就自动建立了,查询所产生的记录就放在本地的游标中,游标有四种类型:仅能向前移动的游标,静态游标,键集游标和动态游标。记录集对象是对数据库进行查询和修改的主要对象。字段对象(Fields字段集合对象,Field字段对象):字段对象用于表示数据库或记录集中的信息,包括列值等信息。一个记录集或一个数据库中的表包括了多行记录,若将其当做二维网格,字段将是网格中的列,每个字段分别有名称,数据类型和值等属性,字段中包括了来自数据库源中的真实数据。要修改其中的数据可在集录集修改Filed字段对象,也可以通过在刻录集中访问Fields字段集合对象,再定位要修改的Filed字段对象。对记录集的修改将最终被传送给数据库。参数对象(Parameter):是和命令对象联用的一个对象。当命令对象执行的查询是一个有参数的查询时,就要用参数对象来为命令对象提供参数信息和数据。使用ADO访问数据库有两种方式:第十二章:ADO编程技术4通过ADO控件访问数据库通过ADO对象访问数据库下面我们将详细讲述这两种访问数据库的方法。第十二章:ADO编程技术5使用ADO控件访问数据库Access2000是MicrosoftOffice中的一个组件,是一个小型的桌面数据系统,我们将以它为例子,讲解使用ADO控件访问数据库的方法。在Access2000建立空数据库(参见Access2000操作信息)在空数据库中建立一个名称为test的一个表(参见Access2000操作信息)建立一个VC的基于对话框的程序框架(也可以是其它向导建立手框架)在对话框界面编辑器中增加一个ADO控件。ADO控件有多种类型:ADOData连接控件,用于方便建立数据连接ADOGrid控件,用于表示一个记录结果集在对话框编辑器,右键菜单中选择InsertActiveXControl,在出现的对话框中选择MicrosoftADODataControl,Version6.0,点OK即可以将连接控件加入到对话框中,同样方法选择MicrosoftADOGridControl,Version6.0加入到对话框中。设置对话框中连接控件的属性上述两个控件的属性设置和VC中其它控件的设置是一样的。连接控件的属性设置:在属性对话框中选择Control页面,选择UseConnectionString选项,点Build按钮,在出现的对话框中选择MicrosoftJet4.0OLEDBProvider提供者。点下一步选择刚建立的Access2000数据文件名称。点测试连接应能连接数据库通过。再一次打开连接控件的属性设置,选择RecordeSource页面,在CommandType中选择2-adCmdTable,在TableOrStoredProcedureName中选择刚建立的test的表。第十二章:ADO编程技术6到此完成一连接控件的设置。设置对话框中Grid控件的属性同样方法打开Grid控件的属性对话框。选择Control页面,选中AllowAddNew和AllowDelete复选框,再选择All页面,设置DataSource参数为连接控件的ID运行该程序将可以在对话框中连接数据库,并取出表中的数据显示在Grid控件中。第十二章:ADO编程技术7使用ADO对象访问数据库ADO数据库开发的基本流程初始化COM库,引入ADO库定义文件用Connection对象连接数据库利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。使用完毕后关闭连接释放对象。我们采用Access数据库,您也可以直接在我们提供的示例代码中找到这个test.mdb。下面我们将详细介绍上述步骤并给出相关代码。COM库的初始化我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:BOOLCADOTest1App::InitInstance(){AfxOleInit();......用#import指令引入ADO类型库我们在stdafx.h中加入如下语句:(stdafx.h这个文件哪里可以找到?你可以在FileView中的HeaderFiles里找到)#importc:programfilescommonfilessystemadomsado15.dllno_namespacerename(EOF,adoEOF)这一语句有何作用呢?其最终作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。几点说明:您的环境中msado15.dll不一定在这个目录下,请按实际情况修改第十二章:ADO编程技术8在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。msado15.tlh(405):warningC4146:unaryminusoperatorappliedtounsignedtype,resultstillunsigned创建Connection对象并连接数据库首先我们需要添加一个指向Connection对象的指针:_ConnectionPtrm_pConnection;下面的代码演示了如何创建Connection对象实例及如何连接数据库并进行异常捕捉。BOOLCADOTest1Dlg::OnInitDialog(){CDialog::OnInitDialog();HRESULThr;try{hr=m_pConnection.CreateInstance(ADODB.Connection);///创建Connection对象if(SUCCEEDED(hr)){hr=m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;DataSource=test.mdb,,,adModeUnknown);///连接数据库///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;第十二章:ADO编程技术9}}catch(_com_errore)///捕捉异常{CStringerrormessage;errormessage.Format(连接数据库失败!r错误信息:%s,e.ErrorMessage());AfxMessageBox(errormessage);///显示错误信息}}在这段代码中我们是通过Connection对象的Open方法来进行连接数据库的,下面是该方法的原型HRESULTConnection::Open(_bstr_tConnectionString,_bstr_tUserID,_bstr_tPassword,longOptions)其中ConnectionString为连接字串,UserID是用户名,Password是登录密码,Options是连接选项,用于指定Connection对象对数据的更新许可权,Options可以是如下几个常量:adModeUnknown:缺省。当前的许可权未设置adModeRead:只读adModeWrite:只写adModeReadWrite:可以读写adModeShareDenyRead:阻止其它Connection对象以读权限打开连接adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接第十二章:ADO编程技术10adModeShareExclusive:阻止其它Connection对象打开连接adModeShareDenyNone:允许其它程序或对象以任何权限建立连接。我们给出一些常用的连接方式供大家参考:通过JET数据库引擎对ACCESS2000数据库的连接m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\test.mdb,,,adModeUnknown);通过DSN数据源对任何支持ODBC的数据库进行连接:m_pConnection-Open(DataSource=adotest;UID=sa;PWD=;,,,adModeUnknown);不通过DSN对SQLSERVER数据库进行连接:m_pConnection-Open(driver={SQLServer};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139,,,adModeUnknown);其中Server是SQL服务器的名称,DATABASE是库的名称Connection对象除Open方法外还有许多方法,我们先介绍Connection对象中两个有用的属性ConnectionTimeOut与StateConnectionTimeOut用来设置连接的超时时间,需要在Open之前调用,例如:m_pConnection-ConnectionTimeout=5;///设置超时时间为5秒m_pConnection-Open(DataSource=adotest;,,,adModeUnknown);State属性指明当前Connection对象的状态,0表示关闭,1表示已经打开,我们可以通过读取这个

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功