我正在尝试将一些基本的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等。
答案 0 :(得分:2)
您使用rsmd.getColumnClassName(1)
作为列名。现在很明显,方法ResultSetMetaData.getColumnClassName
返回该列的类名称。在您的情况下,此列存储整数值,因此返回java.lang.Integer
。请尝试使用ResultSetMetaData.getColumnName
来获取列的名称。