数据库连接技术

一、许多编程语言 都可以 连接数据库。不是在C++中加入SQL语句,而是使 用C++编程语言 连接数据库,并执行SQL语句,以获得数据。
数据库连接,有一些通用的方式。C++中连接数据库并执行SQL语句,主要有以下几种方式:
通用数据库连接技术:
DAO,OLE DB,ADO,ADO.NET(C++/CLI),ODBC等;
其中DAO是MFC内置的,主要用于连接Access;
OLE DB是底层连接技术,比较复杂,但很强大;
ADO对OLE DB进行了封装,调用方便,支持数据库也多;
ADO.NET主要面向.NET平台,可以使用C++/CLI调用;
ODBC是一种通用调用标准,比较普遍;
专用数据库连接技术,就相当于是数据库上为自己做的一套C++库:
比如MySQL用libmysql

以ODBC为例:
如果你要连接MSSQL,需要有MSSQL的ODBC驱动,安装MSSQL时会自动安装,然后设置数据源DSN,然后使用ODBC的通用API调用。
如果你使用VC,那么MFC有封装
代码执行次序大体为:
1.连接数据库
2.执行SQL语句
3.获取数据库返回的结果
4.用完数据库后释放数据库链接

二、OLE DB 和 ODBC的关系

由于OLEDB(支持关系/非关系型数据库) ODBC(仅支持关系型数据库)标准都是为了提供统一的访问数据接口,所以曾经有人疑惑:OLE DB是不是替代ODBC的新标准?答案是否定的。实际上,ODBC标准的对象是基于SQL的数据源(SQL-Based Data Source),而OLE DB的对象则是范围更为广泛的任何数据存储。从这个意义上说,符合ODBC标准的数据源符合OLE DB标准的数据存储的子集

三、OLE-DB 和 ADO的关系

OLE-DB(复杂,无法流行)=》微软对OLE-DB重新封装一次,成了ADO(实现了多种程序可以互相调,大量简化了数据存取工作)!!

由于OLE-DB太底层化,而且在使用上非常复杂,需要程序员拥有高超的技巧,因此只有少数的程序员才有办法使用OLE-DB。这让OLE-DB无法广为流行。为了解决这个问题,并且让VB和脚本语言也能够藉由OLE-DB存取各种数据源,Microsoft同样以COM技术封装OLE-DBADO对象(这一步是很重要的,实现了多种程序可以互相调,并且可以开发的语言也丰富了),简化了程序员数据存取的工作。由于 ADO成功地封装了OLE-DB大部分的功能,并且大量简化了数据存取工作,因此 ADO也逐渐被愈来愈多的程序员所接受。

四、

4.1 ODBC的由来

早期数据库访问是由本机库来执行的,例如SQL Server的DBLib以及Oracle的OCI(Oracle Call Interface,Oracle调用接口)。这样能保证快速地访问数据库,但是不同的数据库要使用不同的API来访问,导致代码通用性很差。

为了解决这个问题,1992年Microsoft和Sybase、Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库。随后ODBC便获得了许多数据库厂商和Third-Party的支持而逐渐成为标准的数据存取技术。

ODBC以当时的业界标准规范X/Open Call Level Interface(CLI)和ISO/IEC9075-3Call-LevelInterface(SQL/CLI)为涵盖的范围,因而支持了广阔的数据库。虽然ODBC在初期的版本中执行效率不佳,而且功能有限,因此也为人们所贬低。但是,随着Microsoft不断地改善ODBC,使ODBC的执行效率不断增加,ODBC驱动程序的功能也日渐齐全。到目前,ODBC已经是一个稳定并且执行效率良好的数据存取引擎。不过ODBC 仅支持关系数据库,以及传统的数据库数据类型,并且只以C/C++语言API(API就是一些C语言的代码,是最底层的程序,在windows中就是一些.dll的文件)形式提供服务,因而无法符合日渐复杂的数据存取应用,也无法让脚本语言使用。因此Microsoft除了ODBC之外,也推出了其他的数据存取技术以满足程序员不同的需要。(注:ODBC是面向过程的语言,由C语言开发出来,不能兼容多种语言,所以开发的难度大,而且只支持有限的数据库公司,对于后来的EXCEL等根本不能支持)。

尽管可以编写直接利用ODBC API的应用程序,但这是相当复杂的。为了避免这种复杂性,微软引入了两个对象模型:DAO(Data Access Object)与RDO(Remote DataObject),可以通过过程性的ODBC API实现面向对象的访问。

4.2 OLE DB的由来

随着数据源日益复杂化,现今的应用程序很可能需要从不同的数据源取得数据,加以处理,再把处理过的数据输出到另外一个数据源中。更麻烦的是这些数据源可能不是传统的关系数据库,而可能是Excel文件,Email,Internet/Intranet上的电子签名信息。Microsoft为了让应用程序能够以统一的方式存取各种不同的数据源,在1997年提出了Universal Data Access(UDA)架构。UDA以COM技术为核心,协助程序员存取企业中各类不同的数据源。UDA以OLE-DB(属于操作系统层次的软件)作为技术的骨架。OLE-DB定义了统一的COM接口作为存取各类异质数据源的标准,并且封装在一组COM对象之中。藉由OLE-DB,程序员就可以使用一致的方式来存取各种数据。但仍然OLEDB是一个低层次的,利用效率不高。

4.3 ADO的由来

虽然OLE-DB允许程序员存取各类数据,是一个非常良好的架构,但是由于OLE-DB太底层化,而且在使用上非常复杂,需要程序员拥有高超的技巧,因此只有少数的程序员才有办法使用OLE-DB。这让OLE-DB无法广为流行。为了解决这个问题,并且让VB和脚本语言也能够藉由OLE-DB存取各种数据源,Microsoft同样以COM技术封装OLE-DB为ADO对象(这一步是很重要的,实现了多种程序可以互相调,并且可以开发的语言也丰富了),简化了程序员数据存取的工作。由于 ADO成功地封装了OLE-DB大部分的功能,并且大量简化了数据存取工作,因此 ADO也逐渐被愈来愈多的程序员所接受。

=》ADO 比ODBC 更加广泛 通用!

五、

微软公司的ADO(ActiveX Data Objects)是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。

ADO被设计来继承微软早期的数据访问对象层,包括RDO(Remote Data Objects)和DAO(Data Access Objects)。ADO在1996年冬被发布。

ADO包括了6个类:Connection,Command,Recordset,Errors,Parameters,Fields。

说通俗点OLE DB和ODBC都是最底层的东西,而ADO对象给我们提供了一个“可视化”地和应用层直接交互的组件,我们不用过多的关注OLEDB的内部机制,只需要了解ADO通过OLE DB创建数据源的几种方法即可,就可以通过ADO轻松地获取数据源。可以说ADO是应用程序和数据底层的一个中间层,ADO对象通过OLE DB间接取得数据库中的数据。OLE DB只是提供了通向各种数据库的一个通用接口,简单的可以用图1来表示:
                               

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值