⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20.2 数据库访问技术.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 TXT
字号:
20.2 数据库访问技术
在现代软件开发中,数据库技术被越来越广泛地应用。很多项目都存在着大量的数据需要存储,通常都会采用数据库来存储这些数据。最初,厂商推出一个新的数据库产品时,
相应地,他会为程序员提供一套访问该数据库的接口,即 API。不同的数据库厂商所提供的访问接口是不一样的。这样,在使用一个新的数据库时,就要学习一套新的 Api,当然这就加大了开发数据库的难度,也不利于数据库在软件开发过程中的应用。因此,后来 Microsoft就推出了一些标准的访问数据库的技术。 
. ODBC C Open Database Connectivity,开放数据库互联) 
ODBC是 20世纪 80年代末 90年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。 ODBC提供一个单一的 API.可用于处理不同数据库的客户应用程序。使用 ODBC API的应用程序可以与任何具有 ODBC驱动程序的关系数据库进行通信。现在,绝大多数主流关系数据库都提供了 ODBC驱动程序。那么我们使用 ODBCAPI就可以访问这些数据库。如图 20.14所示显示了 ODBC的体系架构。
图 20.14 ODBC体系架构

我们所编写的客户程序直接和 ODBC驱动程序管理器打交道,后者利用 ODBC驱动程序所提供的 API访问数据库。在访问不同数据库时,需要指定相应的 ODBC驱动程序,而后者又由 ODBC程序管理器去调用,它会将客户的请求转换为相应的 ODBC驱动,传递给数据库。 
. DAO CData Access Object,数据访问对象) 
DAO就是一组 Microsoft Access/Jet数据库引擎的 COM自动化接口。 DAO不像 ODBC那样是面向 C/C++程序员的,它是微软提供给 Visual Basic开发人员的一种简单的数据访问方法,用于操纵 Access数据库。 
. RDO CRemote Data Object,远程数据对象)
由于 RDO直接调用 ODBC API C而不是像 DAO那样通过 Jet引擎),因此,可以为使用关系数据库的应用程序提供更好的性能。 
. OLEDB (对象链接与嵌入数据库) 
OLEDB在两个方面对 ODBC进行了扩展。首先, OLEDB提供了一个数据库编程的 COM接口:第二, OLEDB提供了一个可用于关系型和非关系型数据源的接口,而 ODBC只能访问关系型数据库。通常我们所说的数据库都是指关系型数据库。但是数据库的概念,从广义上来说,除了关系型数据库以外,还包括其他格式的数据源,包括电子表格、文本文件。 OLE DB的两个基本结构是 OLE DB提供程序 ( Provider)和 OLE DB用户程序 C Consumer)。 
. ADO CActiveX Data Object, ActiveX数据对象) 
ADO建立在 OLE DB之上。 ADO是一个 OLE DB用户程序,即它本身也是一个
Consumer。使用 ADO的应用程序都要间接地使用 OLEDB o ADO简化了 OLEDB,提供了对自动化的支持,使得像 VBScript这样的脚本语言也能够使用 ADO访问数据库。
上述几种数据库访问技术中, DAO和 RD。这两种技术己经很少使用了,随着时代的发展,它们将逐渐退出历史的舞台。而 OLEDB和 ADO这两种是比较新的技术。 OLEDB的功能非常强大,但是它对自动化的支持不是很好。因此像一些自动化的脚本语言,例如 VBScript就不能使用 OLEDB访问数据库。为了更好地支持自动化,微软在 OLEDB的基础上开发了 ADO,便于像 VBScript这样的脚本语言,以及像 VB、 Delphi这样的语言很方便地利用 ADO去访问数据库。但是有一点需要注意, ADO本身是一个 OLEDB的用户程序。 VC I I对利用 OLE DB访问数据库提供了很好的支持,而且速度也比较快,我们可以利用 VC++编写 OLEDB用户程序。如图 20.15所示是 OLEDB的体系结构图。
图 20.15 OLE DB体系结构

从图 20.15可知, ADO和我们编写的 OLEDB访问程序都属于 OLEDB用户程序。由此可知,如果采用 ADO技术访问数据库的话,实际上调用过程是: ADO客户程序通过 ADO再访问 OLEDB提供程序,这样访问速度就要慢一些。但是因为 ADO对自动化提供了很好的支持,所以在 VBScript、 VB这类语言中利用 ADO访问数据库是很方便的。 
OLEDB用户程序利用不同的 OLEDB提供程序可以访问不同的数据源,包括关系型数据库、电子表格、电子邮件,以及其他的非关系型存储,只要这些数据源提供了相应的 OLEDB提供程序。有时,数据源没有提供相应的 OLEDB提供程序,我们还可以自己为这些数据源编写一个 OLEDB提供程序,利用 VC++开发这样的程序也不是很困难。
如果某个关系型数据库没有 OLE DB的提供程序,那么可以利用访问 ODBC的 OLE DB提供程序去访问 ODBC,然后再利用 ODBC去访问支持 ODBC的数据库。可见, OLE DB实现的功能是非常强大的。 
本章将主要介绍 ADO访问数据库的情况。对于其他技术,读者可以自行查阅相应书籍。 ADO中有以下三个核心对象。 
. Connection对象 
Connection对象表示到数据库的连接,它管理应用程序和数据库之间的通信。下面将介绍的 Recordset和 Cornmand对象都有一个 ActiveConnection属性,该属性用来引用 Connection对象。 
. Cornmand对象 
Cornmand对象用米处理重复执行的查询,或处理需要检查在存储过程调用中的输出或返回参数的值的查询。 
. Recordset对象 
Recordset对象用来获取数据。 Recordset对象存放查询的结果,这些结果由数据的行 (称为记录)和列(称为宇段〉组成。每一列都存放在Recordset的Fields集合中的一个Field对象中。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -