数据访问

数据访问 (Data Access),是应用程序连结到数据源 (Data Source) 访问数据的一种行为 (Behavior),在大多数的应用程序中,经常会需要使用到数据,而这些数据可能来自很多不同类型的来源,像是数据库 (Database),网络数据源,本机文件,或是异质性的来源 (例如在 Mainframe 上的 IBM DB2 数据库),经由一层 (或多层) 中介代码或中间件 (Middleware) 进入数据源中,并且取出数据后送回应用程序中来处理。

 

1 标准

数据访问通常会依数据源的不同,而会出现不同的访问方法,例如早期 SQL Server DB-Library,这些接口通常只能由 C/C++ 编程语言来调用,而且各个数据库都有各自独立的 API但开发工具与软件厂商开始相继的提供一致的接口标准,由数据库厂商开发出基于接口标准的 API,以方便应用程序开发人员发展数据库应用程序 (Database Application)

 

 

1.1 ODBC

主条目:ODBC

ODBC (Open Database Connectivity) 是由 SQL Access GroupX/Open (目前为 The Open Group 的一部份) 以及 ISO/EIC 所提出的 Call Level Interface (CLI) (调用层次接口) 接口规格[1],由微软开发出第一份 ODBC 的实现,每一个数据库都可以实现出连结自家数据源的 ODBC 驱动程序 (Driver),而应用程序开发人员能够利用 ODBC 所开放的 API 调用,经由 ODBC Driver 来进入数据库进行访问以及处理工作。

 

ODBC 现在已经是大多数平台上的共同数据访问标准,并且后续由各软件厂商提出的数据访问规格,多数都和 ODBC 有类似的规格。

 

1.2 JDBC

主条目:JDBC

ODBC 类似,由SUN JDK 1.1 中创建的专属 Java 编程语言的数据访问规范[2],各家数据库可以实现 JDBC Driver 接口提供数据源的功能,而应用程序开发人员可利用 Java 所提供的 JDBC API (java.sql javax.sql 封装) 来调用 JDBC 类对象,再由 JDBC 类对象来调用 JDBC Driver 连到数据库中。

 

目前最新版本为 JDBC 4.0 ( Java SE 6.0 )

 

1.3 OLE DB

主条目:OLE DB

Microsoft提出的类似 ODBC 数据库访问规格,但它是使用 COM 以及 Provider-Based 模型来建构OLE DB 规格[3]中定义了许多的接口,由数据库提供者 (database provider) 来实现这些接口,应用程序开发人员则直接利用 COM 调用这些 OLE DB 接口来连接与访问数据。但 Microsoft 也实现了可以桥接 ODBC Driver 的提供者:OLE DB Provider for ODBC,在微软 Windows 应用平台中被大量使用于数据访问中。与 JDBC 不同的是 JDBC 是属于 Java 编程语言的专属规格,但 OLE DB 可以被能够调用 COM 接口的任何编程语言使用。

 

OLE DB 也是 ADO 以及 ADO.NET 的核心基础,而这些 API 目前也被广为用在微软 Windows 应用平台中。

 

2 原理

大多数数据访问的接口规格都是由连接 (Connection),命令 (Command),以及数据集 (Resultset)三个部份构成。

 

2.1 连接

连接是由应用程序通过调用数据访问提供接口提供的函数,以连接的必要信息为主,与数据库之间所创建的一条物理数据连结,连结的方式要视数据库以及数据库所在位置而定,这些连接所需要的必要信息,通常都会定义在一组字符串中,此字符串即称为连接字符串 (Connection String)[4],连接字符串在 JDBC OLE DB 的应用程序中随处可见。

 

一个典型的连接字符串如下:

 

OLE DB for ODBC:

Driver={mySQL};Server=myServerAddress;Option=131072;Stmt=;Database=myDataBase; User=myUsername;Password=myPassword;

 

OLE DB for SQL Native Client:

Provider=SQLNCLI;Server=myServerName/theInstanceName;Database=myDataBase;Trusted_Connection=yes;

当连接打开到关闭之间,应用程序可以利用命令来调用或访问数据源中的数据,但不同的应用程序类型,控制数据库连接生命期的方式也不同,例如在网站类型的应用程序 (Web Application) 中,为了不让数据库的资源在多人环境下被锁定太久,因此连接通常只会在实际运行数据访问前才会打开,在访问完成后立刻关闭。

 

2.2 命令

命令是由应用程序经由连接送入数据源的指令或数据,通常是 SQL 指令(或预存程序)以及其参数,或者是由数据源所支持的其他控制码等,命令送入数据库运行后,视命令类型来决定会不会传回数据集,像是 SQL SELECT 指令会传回结果集,而 INSERT, UPDATE, DELETE 会回传受影响的列数 (可以由数据库控制不传回)

 

2.3 数据集

数据集是由命令送入数据源后所传回,带有结果数据录的集合,数据集可视为一个小型的数据表格,数据访问接口也提供数据集浏览的 API 来让应用程序访问并使用数据集中的数据,大多数数据集的浏览接口都是由高级的 API 来提供,例如 ADO 是由 Recordset 来封装,JDBC Resultset 来封装,而 ADO.NET 则是用 DataReader 来封装。

 

部份数据集接口也提供在不与数据库连接下访问的暂存数据集服务,例如 ADO.NET 中的 DataTableDataSet 等。

 

 

转载说明:本文转载自维基百科,网址:

http://zh.wikipedia.org/zh-cn/%E8%B3%87%E6%96%99%E5%AD%98%E5%8F%96

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值