如何才能对DB2驱动类型有更好的理解

以下的文章主要是介绍DB2驱动类型全面接触,我们大家都知道IBM公司的数据库产品线中不同版本所提供的相关数据访问API,其可以说以是很多了,其中包括早期的基于CLI的驱动,最近的纯Java的驱动,以及CLI和 Java的组合。

对于特定的DB2版本的驱动有特定的驱动也有通用的驱动,这是很明显的.但是诸多版本的数据库系统和诸多版本的访问驱动,放在客户面前,它们之间的关系显得有些纷繁.

所以在使用IBM的数据库产品时,头脑中一定要注意版本对应和选择适当的通用驱动.还好,IBM已经开始走向统一了,也开始注意易用性了,这些努力从DB2 UDB V7就开始了.从那时开始,按照Java领域JDBC驱动的类型划分,IBM有了三类驱动了.

DB2的JDBC TYPE 2 驱动使 Java 应用程序通过JDBC调用DB2.对 DB2 JDBC type 2 driver 的调用被转换成 Java 本地方法.Java 使用这种驱动程序的应用程序必须运行在一个 DB2 客户机上,JDBC 请求通过这个客户机转到 DB2 服务器.

在使用 DB2 JDBC 应用程序驱动程序访问 DB2 UDB for iSeries 数据源或者 DB2 for OS/390 或 z/OS 环境中的数据源之前,必须安装 DB2 Connect Version 8.DB2 JDBC type 2 driver 支持 JDBC 1.2 规范中描述的大部分 JDBC 和 SQLJ 函数,并且支持 JDBC 2.0 规范中描述的一些函数.

DB2的JDBC TYPE 3 驱动,也被称为applet 或net driver,它由一个JDBC 客户机和一个JDBC 服务器(该进程的名字是db2jd)组成.既可以在Applet中使用也可以在应用程序中使用.

DB2的JDBC TYPE 4 驱动被称为通用驱动,是纯Java实现的,该驱动也支持SQLJ.

目前IBM一直都没有提供 TYPE 1的JDBC驱动程序.

这些类型驱动程序所在的包是:db2jcc.jar 和 sqlj.zip 文件,sqllib\bin\db2jcct2.dll(该文件是 TYPE2所必需的).

使用

在使用 JDBC 连接 DB2 UDB V7.2 和 DB2 UDB V8.1 时,如果碰到一些令人费解的问题,可以检查一下开发环境使用的JDK,在IBM提供的已知JDK中切换(目前有1.3和1.4版本),往往就能解决你的问题。

DB2 UDB V8.2个人版本中,下面的测试代码测试了三种连接方式,并给出了结果:

  1. import java.sql.*;  
  2. public class Employee {  
  3. /* 
  4. * @param args  
  5. */  
  6. public static void main(String[] args) {  
  7. // TODO Auto-generated method stub  
  8. Employee ee = new Employee();  
  9. try {  

ee.testJcc();//成功

ee.testNet();//成功

ee.testApp();//失败,原因是:类型2需要安装DB2访问客户端,测试没有安装.如果要通过类型2访问远程数据库,可以把远程数据库编目到本地后即可.

  1. } catch (Exception e) {  
  2. e.printStackTrace();  
  3. }  
  4. }  

内容导航

测试驱动体系结构为类型4驱动:com.ibm.db2.jcc.DB2Driver, 该驱动位于包db2jcc.jar中.

 

  1. @throws InstantiationException  
  2. @throws IllegalAccessException  
  3. @throws ClassNotFoundException  
  4. @throws SQLException  
  5. public void testJcc() throws InstantiationException,  
  6. IllegalAccessException, ClassNotFoundException, SQLException {  
  7. Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();  
  8. String url = "jdbc:db2://192.168.0.17:50000/SAMPLE";  
  9. Connection con = DriverManager.getConnection(url, "db2admin", "cherub");  
  10. con.setAutoCommit(false);  
  11. Statement stmt = con.createStatement();  
  12. ResultSet rs = stmt.executeQuery("select from Employee");  
  13. while (rs.next()) {  
  14. System.out.println(rs.getString(1) + "," + rs.getString(2));  
  15. }  
  16. }  

测试驱动体系结构为类型3驱动:COM.ibm.db2.jdbc.net.DB2Driver, 该驱动位于包 db2java.zip中.

  1. @throws InstantiationException  
  2. @throws IllegalAccessException  
  3. @throws ClassNotFoundException  
  4. @throws SQLException  
  5. public void testNet() throws InstantiationException,  
  6. IllegalAccessException, ClassNotFoundException, SQLException {  
  7. Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();  

// 目标DB2系统侦听该服务于默认端口6789,否则还需要在 URL Pattern 中指定目标端口号

  1. String url = "jdbc:db2:192.168.0.17:SAMPLE";  
  2. Connection con = DriverManager.getConnection(url, "db2admin", "cherub");  
  3. con.setAutoCommit(false);  
  4. Statement stmt = con.createStatement();  
  5. ResultSet rs = stmt.executeQuery("select from Employee");  
  6. while (rs.next()) {  
  7. System.out.println(rs.getString(1) + "," + rs.getString(2));  
  8. }  
  9. }  

测试驱动体系结构为类型2驱动:COM.ibm.db2.jdbc.app.DB2Driver, 该驱动也位于包 db2java.zip中.

  1. @throws InstantiationException  
  2.  
  3. @throws IllegalAccessException  
  4.  
  5. @throws ClassNotFoundException  
  6.  
  7. @throws SQLException  
  8.  
  9. public void testApp() throws InstantiationException,  
  10. IllegalAccessException, ClassNotFoundException, SQLException {  
  11. Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();  
  12. String url = "jdbc:db2:sample";  
  13. Connection con = DriverManager.getConnection(url, "db2admin", "cherub");  
  14. con.setAutoCommit(false);  
  15. Statement stmt = con.createStatement();  
  16. ResultSet rs = stmt.executeQuery("select from Employee");  
  17. while (rs.next()) {  
  18. System.out.println(rs.getString(1) + "," + rs.getString(2));  
  19. }  
  20. }  
  21. }  

以上的相关内容就是对DB2驱动类型全面接触的介绍,望你能有所收获。

【编辑推荐】

  1. 3个建议实现DB2数据库设计,很简单!
  2. 降低DB2管理表空间的高水位标记实操
  3. IBM DB2数据库错误信息的大集合,不得不看!
  4. DB2v9.5控制中心建库报错如何挽救?
  5. DB2 数据类型如何才能轻松接触?

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/244915.html<

(0)
管理的头像管理
上一篇2025-04-25 22:57
下一篇 2025-04-25 22:59

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注