SQLException从ResultSet读取时“未找到列'java.lang.Integer'

时间:2015-06-28 18:00:31

标签: java jdbc resultset

我正在尝试将一些基本的ResultSet转换为JSONArray转换。

有问题的代码如下:

ResultSetMetaData rsmd = rs.getMetaData();
JSONObject obj = new JSONObject();

String column_name = rsmd.getColumnClassName(1);

if(rsmd.getColumType(i) == java.sql.Types.Integer) {
    obj.put(column_name, rs.getInt(column_name));
}

当我将代码发布到Web服务器并点击页面时,会抛出以下错误:

java.sql.SQLException: Column 'java.lang.Integer' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1073)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2571)
at com.sun.gjc.spi.base.ResultSetWrapper.getInt(ResultSetWrapper.java:482)
at com.pododdle.util.ToJSON.toJSONArray(ToJSON.java:58)
atcom.pododdle.restful.resources.CategoryResource.returnCategories(CategoryResource.java:44)

哪有点疯狂,因为它抱怨它找不到java.lang.Integer - 核心java类!!!!

当我使用等效字符串时它也失败并且说它也找不到java.lang.String。

请帮忙。我开始失去理智。

PS我不知道这是否相关,但是Maven没有自动更新我想要的任何新依赖项,所以我手动添加了它们。我不知道这是否意味着我的装置中出现了更大的疾病 - 这很新鲜 - 昨天只在我的新机器上安装了eclipse等。

1 个答案:

答案 0 :(得分:2)

您使用rsmd.getColumnClassName(1)作为列名。现在很明显,方法ResultSetMetaData.getColumnClassName返回该列的名称。在您的情况下,此列存储整数值,因此返回java.lang.Integer。请尝试使用ResultSetMetaData.getColumnName来获取列的名称