我有以下代码: (基本上它是一个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)
答案 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
吗?