1、山西大学本科毕业论文(设计)外文翻译资料 外文出处 : Exploiting Software How to Break Code By Greg Hoglund, Gary McGraw Publisher : Addison Wesley Pub Date : February 17, 2004 ISBN : 0-201-78695-8 译文标题: JDBC 接口技术 译文: JDBC 是一种可用于执行 SQL 语句的 JavaAPI( ApplicationProgrammingInterface 应用程序设计接口)。它由一些 Java 语言编写的类和界面组成。 JDBC 为数据库应用开
2、发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯 Java 语言编写完整的数据库应用程序。 一、 ODBC 到 JDBC 的发展历程 说到 JDBC,很容易让人联想到另一个十分熟悉的字眼“ ODBC”。它们之间有没有联系呢?如果有,那么它们之间又是怎样的关系呢? ODBC 是 OpenDatabaseConnectivity 的英文简写。它是一种用来在相关或不相关的数据库管理系统( DBMS)中存取数据的,用 C 语言实现的,标准应用程序数据接口。通 过ODBCAPI,应用程序可以存取保存在多种不同数据库管理系统( DBMS)中的数据,而不论每个 DBMS 使
3、用了何种数据存储格式和编程接口。 1 ODBC 的结构模型 ODBC 的结构包括四个主要部分:应用程序接口、驱动器管理器、数据库驱动器和数据源。 应用程序接口:屏蔽不同的 ODBC 数据库驱动器之间函数调用的差别,为用户提供统一的SQL 编程接口。 驱动器管理器:为应用程序装载数据库驱动器。 数据库驱动器:实现 ODBC 的函数调用,提供对特定数据源的 SQL 请求。如果需要,数据库驱动器将修改应用程序的请求,使 得请求符合相关的 DBMS 所支持的文法。 数据源:由用户想要存取的数据以及与它相关的操作系统、 DBMS 和用于访问 DBMS 的网络平台组成。 虽然 ODBC 驱动器管理器的主要
4、目的是加载数据库驱动器,以便 ODBC 函数调用,但是数据库驱动器本身也执行 ODBC 函数调用,并与数据库相互配合。因此当应用系统发出调用与数据源进行连接时,数据库驱动器能管理通信协议。当建立起与数据源的连接时,数据库驱动器便能处理应用系统向 DBMS 发出的请求,对分析或发自数据源的设计进行必要的翻译,并将结果返回给应用系统。 2 JDBC 的诞生 自从 Java 语言于 1995 年 5 月正式公布以来, Java 风靡全球。出现大量的用 java 语言编写的程序,其中也包括数据库应用程序。由于没有一个 Java 语言的 API,编程人员不得不在 Java 程序中加入 C 语言的 ODB
5、C 函数调用。这就使很多 Java 的优秀特性无法充分发挥,比如平台无关性、面向对象特性等。随着越来越多的编程人员对 Java 语言的日益喜爱,越来越多的公司在 Java 程序开发上投入的精力日益增加,对 java 语言接口的访问数据库的 API的要求越来越强烈。也由于 ODBC 的有其不足之处,比如它并不容易使用,没有面 向对象的特性等等, SUN 公司决定开发一 Java 语言为接口的数据库应用程序开发接口。在 JDK1 x版本中, JDBC 只是一个可选部件,到了 JDK1 1 公布时, SQL 类包(也就是 JDBCAPI)山西大学本科毕业论文(设计)外文翻译资料 就成为 Java 语
6、言的标准部件。 二、 JDBC 技术概述 JDBC 是一种可用于执行 SQL 语句的 JavaAPI( ApplicationProgrammingInterface,应用程序设计接口)。它由一些 Java 语言写的类、界面组成。 JDBC 给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发 人员可以用纯 Java 语言编写完整的数据库应用程序。 通过使用 JDBC,开发人员可以很方便地将 SQL 语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问 Sybase,写另一个程序访问 Oracle,再写一个程序访问 Microsoft 的 SQ
7、LServer。用 JDBC 写的程序能够自动地将 SQL 语句传送给相应的数据库管理系统( DBMS)。不但如此,使用 Java 编写的应用程序可以在任何支持 Java 的平台上运行,不必在不同的平台上编写不同的应用。 Java 和 JDBC 的结合可以让开发人员在开发数据库应用时 真正实现“ WriteOnce, RunEverywhere!” Java 具有健壮、安全、易用等特性,而且支持自动网上下载,本质上是一种很好的数据库应用的编程语言。它所需要的是 Java 应用如何同各种各样的数据库连接, JDBC 正是实现这种连接的关键。 JDBC 扩展了 Java 的能力,如使用 Java
8、和 JDBCAPI 就可以公布一个 Web 页,页中带有能访问远端数据库的 Ap plet。或者企业可以通过 JDBC 让全部的职工(他们可以使用不同的操作系统,如 Windwos, Machintosh 和 UNIX)在 Intranet 上连接到几个全球数据库上,而这几个全球数据库可以是不相同的。随着越来越多的程序开发人员使用 Java 语言,对 Java 访问数据库易操作性的需求越来越强烈。 MIS 管理人员喜欢 Java 和 JDBC,因为这样可以更容易经济地公布信息。各种已经安装在数据库中的事务处理都将继续正常运行,甚至这些事务处理是存储在不同的数据库管理系统中;而对新的数据库应用来
9、说,开发时间将缩短,安装和版本升级将大大简化。程序员可以编写或改写一个程序,然后将它放在服务器上,而每个用户都可以访问服务器得到最新的 版本。对于信息服务行业, Java 和 JDBC 提供了一种很好的向外界用户更新信息的方法。 1 JDBC 的任务 简单地说, JDBC 能完成下列三件事: 1)同一个数据库建立连接; 2)向数据库发送 SQL 语句; 3)处理数据库返回的结果。 2 JDBC 一种底层的 API JDBC 是一种底层 API,这意味着它将直接调用 SQL 命令。 JDBC 完全胜任这个任务,而且比其他数据库互联更加容易实现。同时它也是构造高层 API 和数据库开发工具的基础。
10、高层 API 和数据库开发工具应该是用户界面更加友好,使用更加方便,更易于理解的。但所有这样的 API 将最终 被翻译为象 JDBC 这样的底层 API。目前两种基于 JDBC 的高层 API正处在开发阶段。 1) SQL 语言嵌入 Java 的预处理器。虽然 DBMS 已经实现了 SQL 查询,但 JDBC 要求 SQL语句被当作字符串参数传送给 Java 程序。而嵌入式 SQL 预处理器允许程序员将 SQL 语句混用: Java 变量可以在 SQL 语句中使用,来接收或提供数值。然后 SQL 的预处理器将把这种Java SQL 混用的程序翻译成带有 JDBCAPI 的 Java 程序。 2
11、)实现从关系数据库到 Java 类的直接映射。 Javasoft 和其他公司已经宣布要实现这一技 术。在这种“对象关系”映射中,表的每一行都将变成这类的一个实例,每一列的值对应实例的一个属性。程序员可以直接操作 Java 的对象;而存取所需要的 SQL 调用将在内部直接产山西大学本科毕业论文(设计)外文翻译资料 生。还可以实现更加复杂的映射,比如多张表的行在一个 Java 的类中实现。 随着大家对 JDBC 兴趣的不断浓厚,越来越多的开发人员已经开始利用 JDBC 为基础的工具进行开发。这使开发工作变得容易。同时,程序员也正在开发对最终用户来说访问数据库更加容易的应用程序。 3 JDBC 和
12、ODBC 及其他 API 的比较 到目前为止,微软的 ODBC 可能是用得最广 泛的访问关系数据库的 API。它提供了连接几乎任何一种平台、任何一种数据库的能力。那么,为什么不直接从 Java 中直接使用 ODBC呢? 回答是可以从 Java 中使用 ODBC,但最好在 JDBC 的协助下,用 JDBC ODBC 桥接器实现。那么,为什么需要 JDBC 呢?要回答这个问题,有这么几个方面: 1) ODBC 并不适合在 Java 中直接使用。 ODBC 是一个 C 语言实现的 API,从 Java 程序调用本地的 C 程序会带来一系列类似安全性、完整性、健壮性的缺点。 2)其次,完全精确地实现从
13、 C 代码 ODBC 到 JavaAPI 写的 ODBC 的翻译也并不令人满意。比如, Java 没有指针,而 ODBC 中大量地使用了指针,包括极易出错的空指针“ void”。因此,对 Java 程序员来说,把 JDBC 设想成将 ODBC 转换成面向对象的 API 是很自然的。 3) ODBC 并不容易学习,它将简单特性和复杂特性混杂在一起,甚至对非常简单的查询都有复杂的选项。而 JDBC 刚好相反,它保持了简单事物的简单性,但又允许复杂的特性。 4) JDBC 这样的 JavaAPI 对于纯 Java 方案来说是必须的。当使用 ODBC 时,人们必须在每一台客户机上安装 ODBC 驱动器
14、和驱动管理器。如 果 JDBC 驱动器是完全用 Java 语言实现的话,那么 JDBC 的代码就可以自动的下载和安装,并保证其安全性,而且,这将适应任何Java 平台,从网络计算机 NC 到大型主机 Mainframe。 总而言之, JDBCAPI 是能体现 SQL 最基本抽象概念的、最直接的 Java 接口。它建构在 ODBC 的基础上,因此,熟悉 ODBC 的程序员将发现学习 JDBC 非常容易。 JDBC 保持了 ODBC 的基本设计特征。实际上,这两种接口都是基于 X OPENSQL 的调用级接口( CLI)。它们的最大的不同是 JDBC 是基于 Java 的风格和优点,并强化了 Ja
15、va 的风格和优点。 最近,微软又推出了除了 ODBC 以外的新的 API,如 RDO, ADO 和 OLEDB。这些API 事实上在很多方面上同 JDBC 一样朝着相同的方向努力,也就是努力成为一个面向对象的,基于 ODBC 的类接口。然而,这些接口目前并不能代替 ODBC,尤其在 ODBC 驱动器已经在市场完全形成的时候,更重要的是它们只是 ODBC 的“漂亮的包装”。 4 JDBC 两层模型和三层模型 JDBC 支持两层模型,也支持三层模型访问数据库。 如图所示,两层模型中,一个 java Appple 或者一个 JA va 应用直接同数 据库连接。这就需要能直接被访问的数据库进行连接的
16、 JDBC 驱动器。用户的 SQL 语句被传送给数据库,而这些语句执行的结果将被传回给用户。数据库可以在同一机器上,也可以另一机器上通过网络进行连接。这被称为“ Client/Server”结构,用户的计算机作为 Client,运行数据库的计 算机作为 Server。这个网络可是 intranet,比如连接全体雇员的企业内部网,当然也可以是internet。 如图所示,在三层模型中,命令将被发送到服务的“中间层”,而“中间层”将 SQL语句发送到数据库。数据库处理 SQL 语句并 将结果返回“中间层”,然后“中间层”将它们 返回用户。 MIS 管理员将发现三层模型很有吸引力,因为“中间层”可以进行对访问的控制并协同数据库的更新,另一个优势就是如果有一个“中间层”用户就可以使用一个易用的高层的 API,这个 API 可以由“中间层”进行转换,转换成底层的调用。而且,在许多情况下,三层模型可以提供更好的性能。 到目前为止,“中间层”通常还是用 C 或 C+实现,以保证其高性能。但随着优化编译器的引入,将 java 的字节码转换成高效的机器码,用 java 来实现“中间层”将越来越实