【问题标题】:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException while executing query in DB2在 DB2 中执行查询时,线程“main”java.lang.ArrayIndexOutOfBoundsException 中的异常
【发布时间】:2013-10-04 23:58:33
【问题描述】:

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

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) 在 com.ibm.db2.jcc.t4.ab.a(ab.java:103) 在 com.ibm.db2.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.t.c(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)

【问题讨论】:

  • 您是否能够使用 SQL Developer 或 HeidiSQL 之类的程序连接到数据库?如果有,执行select * from libids时返回多少行;
  • 是.. 1 行返回..!!
  • 这不是连接问题。这是执行查询的问题。您已成功连接。你自己的痕迹是这样说的。

标签: java jdbc db2


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      相关资源
      最近更新 更多