使用jdbc.app.DB2Driver时出错

时间:2013-09-08 07:23:35

标签: java jdbc db2

我在Arch Linux(虚拟机)中安装db2 expressC 10.5。然后我尝试使用COM.ibm.db2.jdbc.app.DB2Driver连接到DB2。所有结果都是找不到类或找不到驱动程序。这是我的代码:

import java.sql.*;
import java.io.*;
import java.lang.*;

class MyJDBC {
    static {
        try { 
            Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
        } catch (Exception e) {
            System.out.println("Error");
            e.printStackTrace();
        }
    }

    public static void main(String argv[]) {
        try {
            Connection con = null;
            String url = "jdbc:db2:sample";
            if (argv.length == 0) {
                con = DriverManager.getConnection(url); 
            } else if (argv.length == 2) {
                String userid = argv[0];
                String passwd = argv[1];
                con = DriverManager.getConnection(url, userid, passwd);
            } else {
                throw new Exception("\nUllU");
            }
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery
             ("SELECT EMPNO, LASTNAME " +
              " FROM employee"  +
              " WHERE SALARY > 40000 " );
            while (rs.next()) {
                System.out.println("empno = " + rs.getString(1) + " lastname = " + rs.getString(2));
            }
            rs.close();
            stmt.close();
            con.close();

        } catch(Exception e) {
             e.printStackTrace();
       }
    } 
}

环境是:

java version "1.7.0_40"
OpenJDK Runtime Environment (IcedTea 2.4.1) (ArchLinux build 7.u40_2.4.1-3-x86_64)
OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)

CLASSPATH:

   /home/db2inst1/sqllib/java/db2java.zip:/home/db2inst1/sqllib/function:/home/db2inst1/sqllib/java/db2jcc_license_cu.jar:/home/db2inst1/sqllib/tools/clpplus.jar:/home/db2inst1/sqllib/tools/jline-0.9.93.jar:/home/db2inst1/sqllib/java/db2jcc.jar:.

我认为可以访问所有驱动程序(db2java.zip等),但是当我运行:java MyJDBC时,它显示:

java.sql.SQLException: No suitable driver found for jdbc:db2:sample
    at java.sql.DriverManager.getConnection(DriverManager.java:596)
    at java.sql.DriverManager.getConnection(DriverManager.java:233)
    at MyJDBC.main(MyJDBC.java:19)

如果指定类路径:java -cp "sqllib/java/*:." MyJDBC。首先,程序抛出异常(java.lang.ClassNotFoundException:COM.ibm.db2.jdbc.app.DB2Driver)。然后它显示正确的答案。难以相信。希望可以有人帮帮我。感谢。

PS:我知道通过jcc.DB2Driver连接DB2的新方法,它在我的机器上运行良好。但为什么老方法不起作用?

1 个答案:

答案 0 :(得分:0)

“为什么旧方法不能工作?” - 因为DB2 LUW 10.1中已停止使用类型2(所谓的“app”)驱动程序。 http://pic.dhe.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.wn.doc/doc/i0058719.html

相关问题