使用JDBC连接不同版本DB2的兼容性问题
2007-11-02 21:41:35 来源:WEB开发网关系数据库在您的电子商务应用中一定扮演着不可或缺的重要角色。DB2 是您的选择么?也许您的系统里早就部署了 DB2 UDB V7.2 系列软件;也许您正打算升级您的 DB2 系统到最新的版本;也许您刚刚部署了最新的 DB2 UDB V8.1 系列软件,并且想更新您之前开发的应用系统。如果您正打算这么做,那么这篇文章的话题应该是您所感兴趣的。
您的应用系统如果想和 DB2 系统打交道,我想首先需要做的一定是和 DB2 数据库建立连接并且对数据库进行各种操作。对于基于 JAVA 平台的应用程序来说,JDBC(Java Database Connectivity)一定是开发人员的首选。它作为 JAVA 编程语言的必备组件,已经成为 JAVA 2 标准版(JAVA 2,Standard Edition,J2SE)规范的一部分,而 DB2 系统对 JDBC 做了很好的支持。
在您决定迁移您的应用系统的时候,可能并不想直接升级您的DB2系统到最新的版本,这个时候就可能会碰到和我开发中所碰到的相似的情形,即我们需要适应不同版本的 DB2 数据库同时存在的应用环境,这时我们可能希望应用程序能够顺利地在不同版本的 DB2 数据库之间迁移而无需做过多的修改。
本文就介绍了为解决这类问题所做的一系列实验,并且根据实验结果给开发人员提出了一些建议。
我们讨论的范围限定在使用 JDBC 连接 DB2 UDB V7.2 和 DB2 UDB V8.1 时碰到的问题。这里实验环境中的 JDK 版本是 1.3,可能有些开发人员已经尝试采用 JDK1.4 了,如果开发中碰到一些令人费解的问题,请尝试改变您的 JDK 版本再做尝试,这往往就能解决你的问题。
通过本文,读者可以了解到下面的一些知识:
1. DB2 系统对 JDBC (Java Database Connectivity)的支持
2. DB2 命令行工具 CLP(Command Line Processor)
3. DB2 命令中心(DB2 Command Center)
4. 不同版本 DB2 系统发布的 JDBC 驱动程序彼此的兼容性
我在实验中使用的软件系统包括:
1. IBM DB2 UDB V7.2 Enterprise Edition
2. IBM DB2 UDB V7.2 Enterprise Edition FixPack 7
3. IBM DB2 UDB V8.1 Enterprise Server Edition
4. IBM DB2 UDB V8.1 Enterprise Server Edition FixPack 4
5. IBM WSAD V5.0
6. Windows 2000 Server
DB2 与 JDBC 支持
依照 JDBC 规范,有四种类型的 JDBC 驱动程序体系结构:
Type 1:这类驱动程序将 JDBC API 作为到另一个数据访问 API 的映射来实现,如开放式数据库连通性(Open Database Connectivity,ODBC)。这类驱动程序通常依赖本机库,这限制了其可移植性。JDBC-ODBC 桥驱动程序就是 Type 1 驱动程序的最常见的例子。
Type 2:这类驱动程序部分用 JAVA 编程语言编写,部分用本机代码编写。这些驱动程序使用特定于所连接数据源的本机客户端库。同样,由于使用本机代码,所以其可移植性受到限制。
Type 3:这类驱动程序使用纯 JAVA 客户机,并使用独立于数据库的协议与中间件服务器通信,然后中间件服务器将客户机请求传给数据源。
Type 4:这类驱动程序是纯 JAVA,实现针对特定数据源的网络协议。客户机直接连接至数据源。
对于DB2 UDB V7.2来说,它不支持 Type 1 和 Type 4 的驱动程序,但是提供了分别支持 Type 2 和 Type 3 的驱动程序。
示例如下:
两种驱动程序均随产品安装由 db2java.zip 提供。
COM.ibm.db2.jdbc.app.DB2Driver
这是一种 Type 2 的 JDBC 驱动程序,它通过 DB2 本地客户机库的帮助建立和 DB2本地数据库或是远程数据库的连接(事先将远程数据库编目到本地)。因此,我们必须在应用系统所在的机器上同时部署 DB2 本地客户机库,这也许是它最大的一个不足之处。
使用格式如下:
Driver Name:COM.ibm.db2.jdbc.app.DB2Driver
URL Pattern:jdbc:db2:databasename
databasename: 需要访问的数据库名
COM.ibm.db2.jdbc.net.DB2Driver
这是一种 Type 3 的 JDBC 驱动程序,它通过与一台已经部署了 DB2 本地客户机库的机器通信来建立和 DB2 远程数据库的连接。
使用格式如下:
Driver Name:COM.ibm.db2.jdbc.net.DB2Driver
URL Pattern:jdbc:db2:ServerIP:databasename
ServerIP: 需要访问的数据库所在机器IP地址
databasename: 需要访问的数据库名
(目标DB2系统侦听该服务于默认端口6789,否则还需要在 URL Pattern 中指定目标端口号)
对于 DB2 UDB V8.1 来说,它仍然不支持 Type 1 的驱动程序。同时,它在 DB2 UDB V8.1的基础上,新增加了对 Type 4 驱动程序的支持。
赞助商链接