-1

我在 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)

类路径:

   /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 的新方法,它在我的机器上运行良好。但是为什么老方法行不通呢?

4

1 回答 1

0

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

于 2013-09-08T14:22:33.000 回答