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