栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Java使用db2jcc4.jar连接db2数据库完整方法(附idea打jar包依赖路径配置方法)

Java使用db2jcc4.jar连接db2数据库完整方法(附idea打jar包依赖路径配置方法)

一、前言

最近使用kettle从db2导出数据到mysql,测试好好的,结果生产上报错-1060,08004;于是就想写个java试试行不行,会不会是账号密码、数据库错误、或者是数据库连接jar包不兼容的问题。

以下是java使用db2jcc4-9.7.0.6.jar连接db2数据库、执行sql的代码样例。(普通java程序,只用到这1个jar包)

二、代码样例
import com.ibm.db2.jcc.DB2ConnectionPoolDataSource;
import javax.sql.PooledConnection;
import java.sql.Connection;
import java.sql.PrepareStatement;
import java.sql.ResultSet;

public class Main{
  private static final String ip = "10.123.123.123";
  private static final int port = 50000;
  private static final String username = "abc";
  private static final String password = "mypass";
  private static final String dbname = "mydb";
  private static final String sql = "select * from company where id = '001'";

  public static void main(String[] args){
    System.out.println("begin");
    try{
      DB2ConnectionPoolDataSource db2 = new DB2ConnectionPoolDataSource();
      //重要,有这句就不报错了
      //好像有这句就不用写Class.forName(“COM.ibm.db2.jcc.DB2Driver”);了
      db2.setDriverType(4);
      db2.setServerName(ip);
      db2.setLoginTimeout(10000);
      
      db2.setDataSourceName(ip);
      db2.setPortNumber(port);
      db2.setUser(username);
      db2.setPassword(password);
      db2.setDatabaseName(dbname);
      
      PooledConnection pooledConnection = db2.getPooledConnection();
      Connection connection = pooledConnection.getConnection();
      PreparedStatement ps = connection.prepareStatement(sql);
      ResultSet rs = ps.exectueQuery();
      
      while(resultSet.next()){
        System.out.println(resultSet.getString(1));
      }

      System.out.println("success");
      
    }catch(Exception e){
      System.out.println("error");
      System.out.println(e);
    }
    System.out.println("end");
  }

}

三、总结

1.上面的代码是一个简单的java连接db2的代码,当时主要用来测试是否是用户名密码、数据库名称、或数据库连接jar包有问题,导致了kettle执行失败。
2.使用db2.setDriverType(4)之后,就不需要Class.forName("COM.ibm.db2.jcc.DB2Driver")这句话加载驱动类了。

四、其它笔记

1.sqlcode=-1060 sqlstate=08004错误表示用户没有权限。

2.打jar包前,注意在MANIFEST.MF文件中配置Class-Path,然后执行jar包时才能找到依赖,否则会报错。

(1)例如,MANIFEST.MF如下:

Manifest-Version: 1.0
Class-Path: ./db2jcc4-9.7.0.6.jar 
Main-Class: Main

(2)主类是Main.java,打完包生成main.jar(依赖db2jcc4-9.7.0.6.jar)

(3)把main.jar放到C:下,把db2jcc4-9.7.0.6.jar也放到C:下。

(4)使用java -jar C:main.jar启动main.jar;由于配置了Class-Path,并且db2jcc4-9.7.0.6.jar在对应路径,因此可以成功启动。

3.百度搜不到的问题,可以试试bing搜索(国际版);当然如果有外网能搜索就更好了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号