WEB开发网
开发学院数据库DB2 使用JDBC连接不同版本DB2的兼容性问题 阅读

使用JDBC连接不同版本DB2的兼容性问题

 2007-11-02 21:41:35 来源:WEB开发网   
核心提示: 这步实验需要分两种情况来分析: 1. 本地端是 DB2 UDB V7.2 系统,远端是 DB2 UDB V8.1 系统,使用JDBC连接不同版本DB2的兼容性问题(4),被编目至本地, 先用 DB2 命令行工具建立连接,测试了 DB2 UDB V7.2 与 DB2 UDB V8.1 中 JDBC 驱动程序彼

   这步实验需要分两种情况来分析:

   1. 本地端是 DB2 UDB V7.2 系统,远端是 DB2 UDB V8.1 系统,被编目至本地。

   先用 DB2 命令行工具建立连接,进行各项数据库操作,都没有问题。
   再用 DB2 命令中心重复上面操作,也没有问题。最后编写代码重复上面操作,同样一切正常。
   这个结果让我们非常满意。

   2. 本地端是 DB2 UDB V8.1 系统,远端是 DB2 UDB V7.2 系统,被编目至本地。

   先用 DB2 命令行工具建立连接,进行各项数据库操作,一切正常。
   再用 DB2 命令中心重复上面操作,数据库连接正常,但继续做数据库操作时,会报错:SQL0805N 找不到程序包 "NULLID.SYSSH200"。 SQLSTATE=51002,无法继续。
   最后,编写代码进行测试,数据库连接一切正常,能够获得 Connection 对象引用,但是一旦进行各种数据库操作,会报和上面同样的错误。
   这个错误将和下面实验 D 碰到的错误类似,下文会给出统一的解决方案。

   C:这类实验之前我们猜测成功的可能性不大,最后的结果也验证了我们的猜测。

  DB2 UDB V7.2 远程数据库(未编目成本地数据库) DB2 UDB V8.1 远程数据库(未编目成本地数据库)
COM.ibm.db2.jdbc.net.DB2Driver(DB2 UDB V7.2产品发布) 与A重复 连接失败
COM.ibm.db2.jdbc.net.DB2Driver(DB2 UDB V8.1产品发布) 连接失败 与A重复

   经过这步测试,可以认为直接用 COM.ibm.db2.jdbc.net.DB2Driver 连接不同版本的远程数据库是不合适的。

   D:开发人员一定对 DB2 UDB V8.1 新增支持的这两种 JDBC 驱动程序期望值很高,因此这步实验的结果大家会比较关心。

 DB2 UDB V7.2 远程数据库(编目成本地数据库) DB2 UDB V7.2 远程数据库(未编目成本地数据库)
com.ibm.db2.jcc.DB2Driver(Type 2) 连接成功,其它操作失败(CLP 除外) 无意义
com.ibm.db2.jcc.DB2Driver(Type 4) 无意义 连接失败

   通过这步实验,这种最新支持的 JDBC 驱动程序在兼容低版本上与原有驱动类似。看到这个结果我们有点失望。

   其实,这个问题的关键在于一些标准 JCC JDBC 程序包没有和目标数据库进行绑定,可以手工通过执行下面命令来完成这项工作。

   示例如下:

   db2jdbcbind -url jdbc:db2://ServerIP:50000/SAMPLEDB -user db2admin -password password

   使用该命令实现绑定相关程序包之后,我又重复了部分实验 B 和实验 D,实验结果如下:

  DB2 UDB V7.2 远程数据库(编目成本地数据库) DB2 UDB V8.1 远程数据库(编目成本地数据库)
COM.ibm.db2.jdbc.app.DB2Driver(DB2 UDB V8.1产品发布) 成功 成功

 DB2 UDB V7.2 远程数据库(编目成本地数据库) DB2 UDB V7.2 远程数据库(未编目成本地数据库)
com.ibm.db2.jcc.DB2Driver(Type 2) 成功 无意义
com.ibm.db2.jcc.DB2Driver(Type 4) 无意义 成功

   这同时解决了实验 B 和实验 D 中都碰到的问题,让我们松了一口气。

   实验结论:

   通过上面的实验,我们就可以得出这样一些建议。它适用于当您需要在不同版本的DB2系统之间迁移您的数据库应用的时候。

   我们可以基于旧版本的 DB2 系统(如 DB2 UDB V7.2),然后将目标系统(如 DB2 UDB V8.1)编目至本地,使用 COM.ibm.db2.jdbc.app.DB2Driver 进行数据库连接和操作。
   我们也可以基于新版本的 DB2 系统(如 DB2 UDB V8.1),然后将目标系统(如 DB2 UDB V7.2)编目至本地,先手工将相关程序包绑定至目标数据库系统,再使用 COM.ibm.db2.jdbc.app.DB2Driver 或是 com.ibm.db2.jcc.DB2Driver 进行数据库连接和操作。
   实验的结果让我们较为满意,我们有了不只一种选择来迁移我们的应用。

   注:由于时间和环境的限制,实验不可能覆盖所有的 JDBC 特性,而只限于较为常见的数据库操作。因此,可能在一些特殊情形下上面的实验结果并不成立,欢迎作进一步的讨论和补充。

   小结

   本文的作者在开发中碰到了 JDBC 数据库应用在不同版本 DB2 系统之间迁移的问题。带着这个问题,他进行了一系列实验,测试了 DB2 UDB V7.2 与 DB2 UDB V8.1 中 JDBC 驱动程序彼此的兼容性,并就存在的问题给出了解决办法。最后给有类似困惑的开发人员提出了一些建议。

浏览URL http://www.cncms.com.cn/db2/u372913.html

上一页  1 2 3 4 

Tags:使用 JDBC 连接

编辑录入:coldstar [复制链接] [打 印]
赞助商链接