我正在使用 mysql 5.1.18 连接器运行 mysql 5.5。一个简单的风格查询
select * from my_table where column_a in ('aaa','bbb',...) and column b=1;
从 java 应用程序中执行。该查询返回 25k 行的结果集,每行 8 列。在while循环中读取结果
while(rs.next())
{
MyObject c= new MyObject();
c.setA(rs.getString("A"));
c.setB(rs.getString("B"));
c.setC(rs.getString("C"));
...
}
通常在第一个循环期间引发以下异常,但从不在同一行中:
java.lang.NullPointerException
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5720)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5570)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5610)
我查看了 ResultSetImpl.java:5720 中的源代码,我看到以下内容:
switch (metadata.getSQLType())
元数据在哪里
Field metadata = this.fields[internalColumnIndex];
getSQLType 是返回 int 的无逻辑 getter。有趣的是,同一个元数据对象在上面的几行中与其他 getter 一起被多次调用,并且没有抛出异常。
顺便说一句,上面的查询直接在 mysql 中运行时没有问题。应用程序在 aws 中运行。
任何想法如何解决这个问题?谢谢。