JDBC从入门到精通二

2. 7. 使普通任务简化

我们希望普通的任务能够是简单的,而不一般的工作是可行的。

一个普通任务是指一个程序员执行一个简单的没有参数的SQL语句(例如:SELECT,INSERT,UPDATE,DELETE),然后(例如SELECT)处理返回的具有简单类型的元组。一个具有传入参数(IN parameter)的SQL语句也是普通的。

不那么普通但是也是十分重要的情形是当程序员使用有INOUT,OUT参数的SQL语句。我们也需要支持读写几兆字节对象的SQL语句,更特别一些的情形包括一个语句返回了多个结果集合。

我们希望元数据(Meatdata)的使用很少的,只是那些熟练的程序员以及开发工具才需要处理的问题。元数据存取函数以及动态类型数据存取函数在这个文档末尾,一般的程序员可以不必关心这些章节。

2. 8. 不同的功能让不同的方法(函数)来实现(“方法”的原文是:method,这样翻译是跟VB的)

一种界面设计风格是使用很少的过程,提供许多作为参数传递的控制标志,这样它们可以用来影响很大一个范围内的各种行为。来表达不同的功能。这趋向与使用很多的方法,但是每个方法都比较同意理解。

一般来说,Java内核类使用不同的方法(method)。这个步骤的主要优点是开始学习基本界面的程序员可以不必被那些与复杂功能相关的参数所困扰。我们力图在JDBC接口上也采用相同的策略。一般来说采用不同的方法而不是采用不同的标志和多用途的方法。

3. 接口概貌 接口分为两个层次,一个是面向程序开发人员的JDBC API。另外一个是底层的JDBC Driver API。

3. 1. JDBC API JDBC API 被描述成为彝族抽象的Java接口,似的应用程序远可以对某个数据库打开连接,执行SQL语句并且处理结果。最重要的接口是:

* java.sql.DriverManager //处理驱动的调入并且对产生新的数据库连接提供支持。

* java.sql.Connection //代表对特定数据库的连接。

* java.sql.Statement //代表一个特定的容器,来对一个特定的数据库执行SQL语句。

* java.sql.ResultSet //控制对一个特定语句的行数据的存取。

其中java.sql.Statement又有两个子类型:

1. java.sql.PreparedStatement  用于执行预编译的SQL语句。

2. java.sql.CallableStatement  用于执行对一个数据库内嵌过程的调用。

下面的章节对JDBC是如何运行的提供了更多描述,整个定义见第13章。另外第15章描述了系统如果获取数据库的元数据信息。

3. 2. JDBC Driver API

java.sql.Driver在第9章有完整的定义了。大部分JDBC驱动只需要完成这些JDBC API所定义的抽象类就可以了。特别地,所有的driver必须提供对java.sql.Connection, java.sql. State-ment, java.sql.Prepared-Statement, and java.sql.ResultSet的实现。

如果目标DBMS提供有OUT参数的内嵌过程,那么还必须提供java.sql.CallableStatement 接口。 每个database driver必须提供一个类:java.sql.Driver以使得系统可以由 java.sql.DriverManager来管理。

一个显然的driver是在ODBC之上提供对JDBC的实现,从而提供与ODBC接口的JDBC-ODBC 桥,就象前面的图所显示的.由于JDBC放在ODBC之后,所以实现起来简单而且高效。

另外一个有用的驱动直接接触数据库无关的网络协议。发布一个协议允许多个服务器实现的方法,例如在ODBC或者特定的DBMS上(尽管已经有了一些使用固定协议的产品,但是我们不打算对它们实现标准化。),是可取的。

4. JDBC使用场合

在看JDBC API之前了解一下典型的使用场合是有帮助的。通常有两种情形必须分别对待:applet和application.

Before looking at specifics of the JDBC API,

an understanding of typical use scenarios is help-ful.

There are two common scenarios that must be treated

differently for our purposes: applets and applications.

4. 1. Applet

目前Java使用的最多的从网络中下载的applet,它们作为web文件的一个部分。当中有数据库存取applet和能够使用JDBC来接触数据库的applet。例如,一个用户可能下载一个显示股票历史价格图的applet。这个applet通过internet来从关系数据库中获得股票历史价格。

最一般的情况里面,对applet的使用是通过不可靠的边界的。例如从另外一个公司或者Internet上获得这些applet。于是称这个情况为”Internet”场合。然而applet也可能通过局域网下载。在这个情况里面,客户机的安全都还是一个问题。

典型的applet在几个方面与传统的数据库应用程序有所不同:

1).不可靠的applet被严格地限制在他们被允许执行的的操作上。特别地,不允许他们存取本地的文件,切不允许他们对任意的数据库建立网络连接。

2). 就标识和连接网上数据库来说,Internet环境里面的applet面临新的问题。

3).当数据库可能与你相隔万里的时候,效率的考虑也有所不同了。与局域网相比,Internet上数据库applet可能会碰到十分不同的反应时间。

4. 2. Application

Java也可以用来建立普通的应用,从而想一般的应用一样在客户机上使用。我们相信随着开发工具越来越多,人们开始认识到提高程序生产效率的必要性,以及Java的其他优点,Java的这种用法将越来越流行。

在这种方式里面,Java的代码是可以信赖的,且被允许读写文件打开网络连接等等,就想其他的应用程序代码一样。

也许这些Java应用使用的最多的是在一个公司内部或者在Intranet上,所以不妨成为Intranet场合。例如一个公司希望利用Java及其GUI构件工具来建立他的基于合作数据模式的合作软件。这些应用程序将存取局域网或者广域网的数据。Java应用可以作到这些。

Java应用程序场合和Intranet场合与applet场合有诸多不同。例如标定一个数据库最自然的方式是用一个数据库的名字,就象”Customers” 和”Personnel”这样。然后用户希望系统能够定位具体的机器,DBMS,JDBC driver,和Java应用程序。

4. 3. 其他场合

还有其他一些有趣的场合:

1). 已验证的applet(Trusted applets)是指那些已经被Java虚拟机器认定是可以信赖的applet。他们之所以被认为是可信的是因为他们已经对上了特定的密匙,或者用户认为从特定来源来的applet是可信的。

在安全的方面上他们与应用(appliction)相同,但是其他方面(例如定位一个数据库)与则与applet相似。

2). 与直接从Java GUI出发用客户/服务器模式来度曲DBMS服务器不同,三层存取方式可能被使用。在这个场合里面,Java应用程序对中间层的服务发出调用,中间层的服务在网上,它又再去调用数据库。这些调用可能通过RPC (remote procedure call)或者ORB (object request broker )。

在这两种场合里面,中间层最好使用一个对象变化。我们希望三层结构会变得越来越普遍,因为对于MIS管理者来说,这可以使得他们有机会在公共数据库上显式地定义合法操作等。同时三层结构可以提供许多效率上的好处。

目前中间层一般用C或者C++这样的语言来完成。通过优化编译器把把Java 字节代码翻译成为高效的机器代码,中间层也可以用Java来实现。Java有许多优良特性(健壮性,安全性,多线程)可以达到中间层需要达到的目的。

从此便踏上征途,也许会孤独一程。

JDBC从入门到精通二

相关文章:

你感兴趣的文章:

标签云: