菜鸟的数据库访问问题,各位大哥帮帮忙,急!!(在线等)
我用以下语句访问数据库,会报错误。我想是驱动没弄好,但不知道怎么弄,各位大哥帮帮忙。谢了。顺便帮忙看看url="jdbc:db2://GDB-TS/50000:edspdata"这句话有没有错误,我是访问远程的数据库。
import java.io.*;
import java.lang.*;
import java.util.*;
import java.sql.*;
public class Testdb {
public Testdb() {
}
public static void main(String[] args) {
String url="jdbc:db2://GDB-TS/50000:edspdata";
try {
System.out.println("11");
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); (这句就出错了)
System.out.println("22");
Connection con = DriverManager.getConnection(url, "etlrunner", "gdb123");
System.out.println("33");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT distinct etbl FROM ctrl_time");
System.out.println("dning");
String s = rs.getString("etbl");
System.out.println(s);
} catch(Exception e){
System.out.println("tt");
}
}
}
错误代码如下:
Exception in thread "main" java.lang.UnsatisfiedLinkError: SQLAllocEnv
at COM.ibm.db2.jdbc.app.DB2Driver.SQLAllocEnv(Native Method)
at COM.ibm.db2.jdbc.app.DB2Driver.<init>(Unknown Source)
at COM.ibm.db2.jdbc.app.DB2Driver.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:140)
at Testdb.main(Testdb.java:16)
问题点数:20、回复次数:3Top
1 楼aico(aico)回复于 2005-09-01 12:08:35 得分 10
你使用的是DB2的app驱动,这个驱动实际上是一个jdbc类到本地DB2的客户端的桥梁。
因此,如果你用这种方法连接DB2必须安装客户端程序。
解决方法:
1、使用app驱动,安装客户端
2、使用net驱动,COM.ibm.db2.jdbc.net.DB2Driver
当然,还要注意使用与服务器版本一致的jdbc驱动Top
2 楼aico(aico)回复于 2005-09-01 12:10:59 得分 0
相同的问题,在连接Oracle上也有,
如果使用oci驱动,则需要安装ora客户端,
如果使用纯java的jdbc就不用安装了。
一般来说,使用jni方式通过客户端程序连接数据库速度要快一些。但不方便。Top
3 楼lllllllllluoyi(罗毅)回复于 2005-09-01 13:25:19 得分 10
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();是返回一个实例,需要有实例变量得到,如:
Driver d = (Driver)Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();取得一个驱动。
如果只是往JVM中加载驱动直接Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");就行了
-----------
String url="jdbc:db2://GDB-TS/50000:edspdata";
URL有问题,正确的是String url="jdbc:db2://GDB-TS:50000/edspdata";
Top




