数据库访问技术简介
数据库中的数据存放在数据库文件中,我们要从数据库文件中获取数据,先要连接并登陆到存放数据库的服务器。一般来说,访问数据库中的数据有两种方式:一是通过DBMS(Data Base Management System,数据库管理系统)提供的数据库操作工具来访问,如通过SQL Server 2000的查询设计器来提交查询,或者通过SQL Server 2000的企业管理工具来访问。这种方式比较适合DBA对数据库进行管理;二是通过API(Application Programming Interface, sql server 2000是一种应用编程接口)来访问数据库,这种方式适合在应用程序中访问数据库。
在数据库发展的初期,各个开发商为自己的数据库设计了各自不同的DBMS,因此不同类型的数据库之间数据交换非常困难。为了解决这个问题,Microsoft提出了ODBC(Open Data Base Connectivity,开放数据库互连)技术,试图建立一种统一的应用程序访问数据库接口,使开发人员无需了解程序内部结构就可以访问数据库。
1、 Microsoft提出的系列数据库访问技术
1.1、ODBC
ODBC是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。应用程序可以使用所提供的API来访问任何提供了ODBC驱动程序的数据库。ODBC规范为应用程序提供了一套高层调用接口规范和基于动态链接的运行支持环境。ODBC已经成为一种标准,目前所有的关系数据库都提供了ODBC驱动程序,使用ODBC开发的应用程序具有很好的适应性和可移植性,并且具有同时访问多种数据库系统的能力。这使得ODBC的应用非常广泛,基本可用于所有的关系数据库。
要使用ODBC,先要了解以下概念:ODBC驱动管理器、ODBC驱动程序、数据源。它们都是ODBC的组件。ODBC组件之间的关系如图1所示。
图1 ODBC层次结构
(1)ODBC驱动程序管理器
应用程序不是直接调用ODBC驱动程序,而是先调用ODBC驱动程序管理器提供的API。而ODBC驱动程序管理器再调用相应的ODBC驱动程序,这种间接的调用使得不管是连接到什么数据库都可以按照一定的方式来调用。
ODBC驱动程序管理器负责将适当的ODBC驱动程序加载到内存中,并将应用程序的请求发给正确的ODBC驱动程序。ODBC驱动程序管理器代表应用程序加载ODBC数据库驱动程序的动态链接库(ODBC32.dll)。该DLL(Dynamic Link Librarry)对应用程序是透明的。
(2)ODBC驱动程序
ODBC驱动程序处理从ODBC驱动程序管理器发送过来的函数调用,它负责将SQL请求发给相应的DBMS,并将结果返回给ODBC驱动程序管理器。每个遵循ODBC的数据库应该提供自己的ODBC驱动程序,不同数据源的ODBC驱动程序不能混用。
(3)数据源
数据源是数据、访问该数据所需要的信息和该数据源位置的特定集合,其中的数据源位置可用数据源名称描述。例如,数据源可以是通过网络在Microsoft SQL Server 上运行的远程数据库,也可以是本地目录中的Microsoft Access数据库。用户只需用定义好的数据源名称访问数据库,而无需知道其他细节。通过应用程序,可以访问任何具有ODBC驱动程序的数据源。如SQL Server、Oracle、Access等
1.2、OLE DB
随着数据源日益复杂化,应用程序很可能需要从不同的数据源取得数据,加以处理,再把处理过的数据输出到另外一个数据源中。更麻烦的是这些数据源可能不是传统的关系数据库,而可能是Excel文件,Email,Internet/Intranet上的电子签名信息。需要一种新的架构来提供这种应用和数据源之间的无缝连接, OLE DB(Object Link and embed,对象链接和嵌入数据库)技术应运而生。
OLE DB是一种数据技术标准接口,目的是提供一种统一的数据访问接口,这里所说的数据,
除了标准的关系型数据之外,还包括邮件数据、Web上的文本或图形、目录服务等非关系型数据。OLE DB标准的核心内容就是要求以上这些各种各样的数据存储都提供一种相同的访问接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。
ODBC和OLE DB标准都是为了提供统一的访问数据接口,有人就产生疑问:OLE DB是不是作为替代ODBE的新标准呢?答案是否定的。ODBC标准的对象是基于SQL的数据源,而OLE DB的对象则是范围更为广泛的任何数据存储。从这个意义上说,符合ODBC标准的数据源是符合OLE DB标准的数据存储的子集。但是,符合ODBC标准的数据源要符合OLE DB标准,还必须提供相应的OLE DB服务程序(Service Provider),就像SQL Server 要符合ODBC 标准,必须提供SQL Server ODBC驱动程序一样。现在,微软已经为所有的ODBC数据源提供了一个统一的OLE DB 服务程序,叫做ODBC OLE DB Provider。
1.3、DAO
DAO(Database Access Object)使用Microsoft Jet数据库引擎(Jet数据库引擎是一种用来访问Microsoft Access和其它数据源的记录和字段的技术)来访问数据库,是一种面向对
象的界面接口。Jet是第一个连接到 Access 的面向对象的接口。使用 Access 的应用程序可以用 DAO 直接访问数据库。由于 DAO 是严格按照 Access 建模的,因此,使用 DAO 是连接 Access 数据库最快速、最有效的方法。DAO 也可以连接到非 Access 数据库,例如,SQL Server 和 Oracle,但是需要Jet 引擎解释DAO和ODBC之间的调用。
与ODBC一样,DAO也提供了一组API供编程使用。相比较而言,DAO类提供了比ODBC类更广泛的支持。一方面,只要有ODBC驱动程序,使用Microsoft Jet的DAO就可以访问ODBC数据源。另一方面,由于DAO是基于Microsoft Jet引擎的,因而在访问Access数据库时具有很好的性能。
1.4、RDO
由于DAO是专门设计用来与Jet引擎对话的,因此需要Jet 引擎解释DAO和ODBC之间的调用,这导致了较慢的连接速度和额外的开销。为了克服这样的限制,Microsoft创建了RDO(Remote Data Objects,远程数据对象)。
RDO作为DAO的继承者,它将数据访问对象DAO提供的易编程性和ODBC API 提供的高
性能有效地结合在一起。DAO是一种位于Microsoft Jet引擎之上的对象层,而RDO封装了ODBC API的对象层。RDO没有Jet引擎的高开销,再加上与ODBC的紧密关系,使得它访问ODBC兼容的数据库(如 SQL Server)时具有比DAO更高的性能。与RDO紧密关联的是Microsoft RemoteData 控件。不过RDO是一组函数,而Microsoft RemoteData 控件是一种数据源控件,它提供了处理其他数据绑定控件的能力。RDO和RemoteData 控件能编程访问ODBC兼容的数据库,而不需要本地查询处理,如Microsoft Jet引擎。RDO能访问ODBC API 提供的全部功能,但是它更容易使用。
1.5、ADO
DAO与RDO只能处理后台为关系数据库的DBMS,不能解决通用数据存储及通用数据访问。鉴于此,Microsoft推出了另一个数据库访问对象模型ADO。ADO技术是基于OLE DB的访问接口,它继承了OLE DB 技术的优点,并且对OLE DB的接口做了封装,定义了ADO对象,简化了程序的开发。开发人员在使用ADO时,其实就是在使用OLE DB,不过OLE DB更加接近底层。ADO是DAO和RDO的后继产物,提供比DAO和RDO更简单的对象模型。
ADO最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。ADO在应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,能够提供轻量、高性能的接口。
下面我们来看一下以上这几种访问技术之间的关系,如图2所示。
图2 数据库访问技术之间的关系
1.6、ADO.NET
1.6.1、ADO.NET概述
ADO.NET是对ADO的一个跨时代的改进,它提供了平台互用性和可扩展的数据访问。从命名,我们可以看出ADO.NET 是基于.NET Framework的,这也是它与ADO最大的区别。ADO.NET 是Microsoft在.NET Framework中负责数据访问的类库集,它是基于OLE DB 技术以及.NET Framework的类库和编程语言发展而来,它可以让.NET上的任何编程语言能够连接并访问关系数据库和非关系数据库型数据来源,或是独立出来作为处理应用程序数据的类对象。ADO.NET并不简单地是ADO的下一个版本,它更是一个全新的架构、产品和概念。
1.6.2、ADO.NET中的常用对象
(1)Connection对象
使用ADO.NET的第一步是连接数据库之类的数据源。利用Connection对象,即可告诉ADO.NET连接哪个数据库,并提供用户名和口令,以及设置其他选项。
Microsoft的.NET框架针对不同的连接类型,提供了ODBC、OLE DB、SQL Server等多种
Connection对象,下面以连接SQL Server为例进行介绍。
连接到SQL Server使用的对象是SqlConnection。要使用数据库连接对象,必须先对其进行定义,定义格式为:SqlConnection strConn = new SqlConnection(); 接下来需要设置连接字符串,主要有四项:用户名、密码、数据库名和服务器名。格式为:strConn = “uid=用户名;pwd=密码;Database=数据库名;server=服务器名”;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论