此文章主要讲述的是Java连接DB2数据库的实际操作过程,如果你在实际操作中遇到Java连接DB2数据库的实际操作过程,但是你却不知道对其如何正确的解决,那么以下的文章对你而言一定是良师益友。
1. 关于Connection Pool
JDBC本身不提供连接池技术,需要第三方库的支持。
在需要频繁获得连接的Application中***用Connection Pool,如Web Application中
对于一般的Java Application则可以直接用JDBC连接连接DB2数据库。
2. Java Application中连接DB2
安装DB2 Personal Edition V9之后,在其中的java目录可以找到这两个文件:db2jcc.jar; db2jcc_license_cu.jar
db2jcc.jar中的com.ibm.db2.jcc.DB2Driver驱动程序被称为通用驱动,推荐使用(原因看第5点)。在使用它时,需要db2jcc_license_cu.jar,否则会提示没有license而无法工作。
DB2的连接地址:jdbc:db2://localhost:50000/Database
3. Web Application中连接DB2
一、以WAS为例,配置DB2 Data Source
1) 进入控制台
启动Websphere6.0服务, 打开浏览器,在地址栏中输入:http://localhost:9060/ibm/console/,登陆Websphere6.0管理控制台
2) 设置环境变量
在导航栏左侧选择: Environment -> Websphere Variables, 找到DB2UNIVERSAL_JDBC_DRIVER_PATH, 输入DB2数据库驱动jar包的位置,比如C:\Program Files\IBM\SQLLIB\java。确定,保存。
注意:通过管理工具访问远程机器的时候,设置的数据库驱动程序jar包,须为应用服务器所在机器的位置,而不是本机驱动所在位置,否则服务将无法加载驱动程序,测试数据源连接连接DB2数据库将失败。
3) 创建JDBC Provider
在导航栏左侧选择: Resources -> JDBC -> JDBC Providers。在右侧点New. 设置Database type选择DB2; Provider type 选择 DB2 Universal JDBC Driver Provider; Implementation type 选择 Connection pool data source(这里需要注意的是,非英文用户可能会出错,只需打开控制面板 -> 区域和语言选项 -> 区域选项 中的 标准和格式选成英语(美国)即可); Name可以随意设置; 点击Next; Next; Finish; Save。
4) 创建Data source
在导航栏左侧选择: Resources -> JDBC -> Data sources. 在右侧点New. 设置Data source name; 设置JNDI name; Next; 选择刚才新建的JDBC Provider; Next; Database name 设成你的数据库名; Driver type 选 4; Server name 设成server的ip; Port 设为 50000; Next; Finish; Save.
5) 选择刚创建的Data source, 在Related Items中配置JAAS, Alias设置别名; User ID和Password设为访问DB2的用户名和密码; OK; Save.
6) 进入之前的Data source, 在Component-managed authentication alias中选择刚配置的JAAS; OK; Save.
7) 选中该Data source, 点Test connection 进行测试.
二、在JEE项目中调用Data source
在JEE项目中需要在servlet中获得Datasource,方法如下:
- public class DBConnector {
- public static Connection getConnection() throws SQLException, NamingException {
- Context ctx = new InitialContext();
- DataSource ds = (DataSource) ctx.lookup("jdbc/db2");
jdbc/db2为上面WAS中
- Connection conn = ds.getConnection();
- }
- }
在某个Servlet中的doPost或者doGet方法中调用DBConnector.getConnection()方法即可。
4. DB2的连接接口
DB2 提供了两种API:JDBC 和 SQLJ。
SQLJ 是一个用于从 Java 应用程序进行数据访问的标准开发模型。SQLJ API 是在 SQL 1999 规范中定义的。
JDBC 驱动程序分为旧的CLI 驱动程序和新的通用JDBC 驱动程序(Universal JDBC Driver)。新的通用 JDBC 驱动程序在一个实现中同时为 JDBC 和 SQLJ API 提供了支持。JDBC 和 SQLJ 可以在同一个应用程序中互操作。
5. JDBC连接连接DB2数据库方式及DB2驱动的关系
JDBC 驱动程序体系结构分为四种类型,Type1,Type2,Type3,Type4。
JDBC Type 1 驱动程序基于 JDBC-ODBC 桥。因此 ODBC 驱动程序可以与此类 JDBC 驱动程序(由 Sun 提供)结合起来使用。IBM 不支持 Type 1 驱动程序,因此它不是推荐的环境。
JDBC Type 2 驱动程序依靠特定于操作系统的库(共享库)来与 RDBMS 通信。应用程序将装入这种 JDBC 驱动程序,而驱动程序将使用共享库来与 DB2 服务器通信。DB2提供了两种不同的 Type 2 驱动程序:
旧的CLI JDBC 驱动程序 在文件 db2java.zip 中提供。其实现包名称为 COM.ibm.db2.jdbc.app.DB2Driver 。其别名“app 驱动程序”源自于一种观念及其包名称,这种观念就是:此驱动程序将通过远程数据库的本地 DB2 UDB 客户机执行本地连接。
通用 JDBC 驱动程序 在文件 db2jcc.jar 中提供。其实现包名称为 com.ibm.db2.jcc.DB2Driver 。在最初的实现(V8.1)中,此驱动程序用于使用 Type 4 驱动程序体系结构与 DB2 服务器进行直接的 Java 连接。
在 Type 2 体系结构中使用此驱动程序的一个主要原因是为了本地应用程序性能和分布式事务支持。通用 JDBC Type 2 驱动程序分别使用 com.ibm.db2.jcc.DB2XADataSource 和 com.ibm.db2.jcc.DB2ConnectionPoolDataSource 来支持分布式事务和连接池。
JDBC Type 3 驱动程序是一种纯 Java 实现,它必须与 DB2 JDBC Applet 服务器(DB2 JDBC Applet Server)通信才能访问 DB2 数据。此类驱动程序旨在使 Java applet 能访问 DB2 数据源。
JDBC Type 3 驱动程序常被称作“网络(net)驱动程序”,它是根据其包名 COM.ibm.db2.jdbc.net 命名的。Type 3 驱动程序要求 db2java.zip 驱动程序总是处于与 DB2 Applet 服务器相同的维护级别。如果驱动程序在 applet 内使用,这就不是一个问题,因为浏览器会在应用程序执行期间下载相应的 db2java.zip 文件。
许多客户使用 Type 3 驱动程序而不是 Type 2 驱动程序,以避免必需的 DB2 客户机安装和必需的 DB2 CATALOG DATABASE 命令,后者用于创建使用旧的CLI 驱动程序进行 Type 2 连接所必需的数据库目录信息。目前,WebSphere Application Server 和其它 J2EE 服务器不支持 IBM Type 3 驱动程序,因为该驱动程序不支持分布式事务(JTA)。
Type 4 驱动程序是仅用于 Java 的 JDBC 驱动程序,它直接连接连接DB2数据库到数据库服务器。DB2 V8.1 引入了称为“通用 JDBC 驱动程序(Universal JDBC driver)”的 Type 4 驱动程序。通用 JDBC 驱动程序在文件 db2jcc.jar 中提供。其实现包名为 com.ibm.db2.jcc.DB2Driver 。
请注意,通用 Type 2 和通用 Type 4 驱动程序具有相同的实现类名称。有两种方法可以区别 DB2 在内部将实例化哪个驱动程序:
使用不同的连接URL模式来指示您想要Type 2和Type 4行为中的哪一种。
Type 4 URL 模式的示例:字符串“jdbc:db2://server1:50000/sample”。要求 JDBC 驱动程序将 Java 应用程序直接连接到 DB2 服务器上名为“sample”的数据库,该数据库位于配置在 DB2 服务器(主机名为 server1)上的 DB2 实例中,而 DB2 服务器则在端口 50000 上进行侦听。
Type 2 URL 模式的示例:字符串“ jdbc:db2:sample ”。
重要:就 DB2 UDB V8.1.2 而言,通用 JDBC 驱动程序要求 CLASSPATH 中有许可证 JAR 文件和 db2jcc.jar 文件。以下是所需的许可证 JAR 文件:
对于 Cloudscape™ Network Server V5.1: db2jcc_license_c.jar
对于 DB2 UDB V8 for Linux, UNIX 和 Windows 服务器: db2jcc_license_su.jar
对于 DB2 UDB for iSeries® and z/OS 服务器(与 DB2 Connect 和 DB2 Enterprise Server Edition 一起提供): db2jcc_license_cisuz.jar
6. 更多内容
参见:http://blog.csdn.net/peart_boy/archive/2006/10/16/1336201.aspx
【编辑推荐】