0

我有以下一段代码:(基本上它是一个 JAVA-DB2 连接测试程序)

import java.io.IOException;
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestDB22
{
     public static void main(String  rgs[]) throws IOException, ClassNotFoundException, SQLException 
     { 
        Class.forName("COM.ibm.db2os390.sqlj.jdbc.DB2SQLJDriver");
        Connection  con = DriverManager.getConnection("jdbc:db2:rajdb","db2admin","db2admin"); 
        System. out .println( "From TestDB22, connection obtained " );

        Statement st=con.createStatement();
        ResultSet rs = st.executeQuery( "select * from libids" ); 
        while( rs.next())
        {
            System.out.println(rs . getString(2));

        }

     } 
}

我收到以下错误:

从TestDB22,获得连接

com.ibm.db2 的 com.ibm.db2.jcc.t4.ab.a(ab.java:103) 的 java.lang.System.arraycopy(Native Method) 的线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常.jcc.t4.ab.a(ab.java:151) 在 com.ibm.db2.jcc.uw.UWReply.b(UWReply.java:62) 在 com.ibm.db2.jcc.t4.ab.c (ab.java:243) 在 com.ibm.db2.jcc.t4.ab.c(ab.java:354) 在 com.ibm.db2.jcc.t4.ab.v(ab.java:1139) 在com.ibm.db2.jcc.t4.db.c(db.java:52) 在 com.ibm.db2.jcc.t4.tc(t.java:44) 在 com.ibm.db2.jcc.t4。 sb.i(sb.java:147) 在 com.ibm.db2.jcc.am.km.gb(km.java:1985) 在 com.ibm.db2.jcc.am.km.a(km.java: 2866) 在 com.ibm.db2.jcc.am.km.a(km.java:628) 在 com.ibm.db2.jcc.am.km.executeQuery(km.java:612) 在 TestDB22.main(TestDB22 .java:16)

4

2 回答 2

0

我很想说驱动程序中存在错误。确保您使用的是最新版本。

如果这不起作用,请尝试使用 aPreparedStatement代替(是的,我知道查询没有任何参数,所以请不要反对我:)

Statement st = con.prepareStatement("select * from libids");
ResultSet rs = st.executeQuery();
于 2013-10-05T00:26:15.947 回答
0

真的确定你有正确的 JDBC 驱动程序吗.... OS390 os390 已经很老了,在 2000 年或什么时候被替换了。您是否认为您应该使用通用类型 4 驱动程序:com.ibm.db2.jcc.DB2Driver而不是 os390 特定驱动程序COM.ibm.db2os390.sqlj.jdbc.DB2SQLJDriver

于 2013-10-05T03:01:04.250 回答