在 DB2 中实现类型 4 jdbc 驱动程序

Posted

技术标签:

【中文标题】在 DB2 中实现类型 4 jdbc 驱动程序【英文标题】:implement type 4 jdbc driver in DB2 【发布时间】:2013-01-25 16:55:45 【问题描述】:

在我的项目中,我在我设置的 context.xml 和 servlet.xml 中使用了一些配置

<ResourceLink 
     global="jdbc/mydatasource" 
     name="jdbc/mydatasource" 
     type="javax.sql.DataSource" />

<Resource 
     name="jdbc/mydatasource"
     auth="Container"
     type="javax.sql.DataSource"
     username=" DATABASE_USERNAME"
     password=" DATABASE_PASSWORD"
     driverClassName="com.ibm.db2.jcc.DB2Driver"
     url="jdbc:db2://IP:port/DBname" />

并通过将其包含在我的 servlet 中来使用它

 datasource = (DataSource) envContext.lookup("jdbc/mydatasource");

但我想知道什么类型的驱动程序(类型 2、4 等)。我已经在应用程序中导入了 db2jcc.jar。

【问题讨论】:

【参考方案1】:

谷歌搜索 DB2 type 4 驱动程序给了我这个 IBM 页面:Understand the DB2 UDB JDBC Universal Driver(从 2005 年开始)。阅读本文清楚地表明db2jcc.jar 是通用驱动程序,它既是 Type 2 驱动程序,也是 Type 4 驱动程序。你使用什么取决于你指定的 JDBC url:

对于类型 4:

jdbc:db2//服务器:端口/数据库 jdbc:db2//服务器/数据库

对于类型 2:

jdbc:db2:数据库

请注意,根据此站点,您还需要在类路径中使用 db2jcc_license_cu.jar 才能使 Type 4 驱动程序正常工作。

【讨论】:

@Mark-我在我的代码中使用了jdbc:db2//server:port/database 语句,但客户说不要像jdbc:db2//port/database 这样使用它,使其成为Type 4,我没有包含db2jcc_license_cu.jar文件也,bcoz没有它在代码中问我的地方...... @Ars 我自己不使用 DB2,但 jdbc:db2//port/database 没有意义,除非 1) 驱动程序支持省略主机名(这不太可能)和 2) 数据库正在运行本地主机。【参考方案2】:

Java 有DatabaseMetaData interface,它可能包含您正在寻找的信息。我不是 Java 人,但getDriverMajorVersion() 可能会返回您要查找的内容。

【讨论】:

这只会返回驱动程序的主要版本,而不是 JDBC 类型。【参考方案3】:

这个网址实际上是不正确的:

对于Type4:

jdbc:db2://server:port/database jdbc:db2://server/database

缺少另一个冒号。

【讨论】:

以上是关于在 DB2 中实现类型 4 jdbc 驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

JDBC驱动程序类型

加载 DB2 JDBC 驱动程序时出现 java.lang.UnsatisfiedLinkError

是否有用于 DB2 的 JDBC 4.1 驱动程序?

使用 Db2Mon 有没有办法区分使用类型 2 和类型 4 驱动程序连接的客户端?

DSX“帮助:找不到 IBM dashDB/DB2 的 JDBC 驱动程序。”

是否有适用于 DB2 v6 的 JDBC Type 4 驱动程序?