在DB2中执行查询时,线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常

时间:2013-10-04 23:58:34

标签: java jdbc db2

我有以下代码: (基本上它是一个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获得连接

     

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

2 个答案:

答案 0 :(得分:0)

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

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

Statement st = con.prepareStatement("select * from libids");
ResultSet rs = st.executeQuery();

答案 1 :(得分:0)

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