使用 JDBC 连接不同版本 DB2 数据库的兼容性问题
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 驱动程序的支持。
示例如下:
DB2 UDB V8.1 仍然支持上面所述 V7.2 支持的两种驱动程序,随产品安装由 db2java.zip 提供,但具体实现上和 DB2 UDB V7.2 产品发布的包有所不同,所以可能存在下文所要进行实验验证的兼容性问题。
除了 COM.ibm.db2.jdbc.app.DB2Driver 之外,DB2 UDB V8.1 还提供了另外一种 Type 2 的驱动程序,随产品安装由 db2jcc.jar 提供。其实现包名是 com.ibm.db2.jcc.DB2Driver,在DB2 UDB V8.1 最初的实现中,此驱动程序只用于使用 Type 4 驱动程序体系结构与 DB2 服务器进行直接的 JAVA 连接,这类驱动程序由于不需要另外部署 DB2 本地客户机库以及性能相对较好而收到开发人员的欢迎。自从 DB2 UDB V8.1.2(安装了 FixPack 2)之后,开发人员还可以在 Type 2 体系结构中使用该驱动程序,以提高本地应用程序的性能。
这里,两种驱动程序具有相同的实现类名称,有两种不同的方法可以区分 DB2 系统在内部最终会实例化哪个驱动程序:
折腾了一天,原来是驱动的问题,郁闷
完整代码:import java.sql.*;
public class Test{
public Test() {
}
public static void main(String[] args) {
try{
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
String url = "jdbc:db2://10.64.1.202:50000/QICC_DB";
String user = "wpl";
String password = "111";
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = "select * from XZ_GDZC";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
}catch(Exception ex)
{
System.out.println(ex);
}
}
}
使用 JDBC 连接不同版本 DB2 数据库的兼容性问题相关推荐
- JAVA通过JDBC连接并操作MySQL数据库
JAVA通过JDBC连接并操作MySQL数据库 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提 ...
- jdbc链接mysql按照id查询_使用jdbc连接并操作Oracle数据库(增删改查IDUS)
使用jdbc连接并操作Oracle数据库(增删改查IDUS) [oracle@zaibei-db ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Pro ...
- sqlDBX连接服务器的DB2数据库
最近换了工作,所用到的是DB2数据库,不是很懂,记录一下,防止忘记. 问题:连不上服务器 同事给了SqlDbx_3.60_C.exe客户端,说是用来连接db2数据库的,初始页面如下: 正常输入数据库服 ...
- linux下程序JDBC连接不到mysql数据库
今天在linux下部署一个 JavaEE项目的时候总是连接不到Mysql数据库,检查之后发现连接池的配置确定是对的,进入linux服务器之后以mysql -uname -ppassword连接总是报A ...
- 低版本jdbc连接高版本oracle,转:oracle11g的JDBC连接 URL和之前的版本有一定的区别...
今天安装了oracle11g后,写了JDBC测试程序,一直都连接不上! 一直找不到原因 后来读了一下安装文件中的Readme.txt文档,汗啊!这个版本居然把url的访问方式改变了: Some Use ...
- 【Java+MySQL】使用JDBC连接MySQL 8.0数据库
一.Java MySQL 8.0连接驱动包 下载链接:https://pan.baidu.com/s/1YFOImz0dCHtzIajSFq9xgg?pwd=boul 提取码:boul [IDEA]导 ...
- jdbc连接orcle数据库_怎样利用JDBC连接并操作Oracle数据库
之前学习.NET的时候.以前利用ODBC进行连接数据库,而在Java中通常採用JDBC连接数据库,这里以oracle数据库为例简单的总结一下利用JDBC怎样连接并操作数据库. 1.连接 public ...
- Java JDBC 连接SQL Server 2012 数据库
参考: https://www.cnblogs.com/cjwxf/p/6138416.html 首先保证SQL Server 2012 装好后是用SQL Server身份认证 一.因为SQL Ser ...
- db2 jdbc 连接池_db2 jdbc连接数据库
DB2的JDBC连接驱动与URL总结 依照 JDBC 规范,有四种类型的 JDBC 驱动程序体系结构: Type 1:这类驱动程序将 JDBC API 作为到另一个数据访问 API 的映射来实现,如开 ...
- jdbc连接mysql驱动包_jdbc连接数据库驱动包
FineReport如何用JDBC连接阿里云ADS数据库 在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我 ...
最新文章
- 联想杜比音效_联想小新15 2020锐龙版首销;OPPO Find X2系列也可尝鲜安卓11
- layer.tips定义弹出的宽度
- 一个Demo学完Android中所有的服务
- MongoDB中_id(ObjectId)生成
- 深度学习试题_高中生物:今年高考试题3点显著变化及5个备考建议!不看准吃亏...
- python数据动画_[转载]Maya使用Python获取动画每帧的rotation数据
- solr4.6本地数据提交异常
- mysql视图执行原理_MySql中的视图 触发器 存储过程,以及事物
- [JavaScript]面向对象编程
- Mac实用技巧:如何关闭笔记本的Fn功能
- apache poi excel显示 base64 图片_java操作Excel一:POI
- c语言练习----渔夫打鱼晒网
- Mac电脑:您的安全性偏好设置仅允许安装来自App Store和被认可的开发者的应用(解决方法)
- 坚持并活下去!cxuan 在 CSDN 的 2020 年终总结。
- 错排问题(装错信封问题)
- SPDK+NVMe SSD对接Virtio支撑红包场景性能
- python安装途中遇到的问题和解决方法
- 关于Home Lab的搭建——硬件选择篇(迷你主机)(一)
- JBOSS整套开发组件整合和配置方法
- 我的Java学习之路(第七天)------数组
热门文章
- Pr 入门教程如何倾斜移位效果?
- 北京地区的图像处理公司
- 没有事业的女孩子很悲惨 - - - 一位老总的话!
- python导入数据画直方图加正态曲线_用python制作正态分布图
- Google高级搜索技巧之高级语法查询指令
- python 计算众数、中位数、分位数、偏度、峰度
- 执行Jar包报错FileNotFoundException: /home/data/t.txt (Too many open files)以及Cannot run program “/bin/bash
- Apache Log4j2.x RCE命令执行漏洞攻击原理及修复措施
- 如何配置线上生产服务器环境(密匙登录、防火墙 、Node、Nginx、MongoDB、Redis、Mysql、PHP、JDK、Tomcat等)
- 浅谈我是如何从简单的系统功能需求书写规范的需求分析说明书