我收到一条错误消息,指出从数据库返回的 ResultSet 中缺少一些string
。现在我遇到了一个问题:如何查看 ResultSet 中的内容?
google上提供的示例包含getString()
或getInt()
等显式方法,但这些方法假设您知道自己在寻找什么。我真正需要的是 - 查看我ResultSet
中可用的元素。
当我发出resultSet.toString()
命令时,它会向我显示某种带有变量名称的地图 - 是否可能?
修改
如果它有用 - 下面是一段代码:
public Project mapRow(ResultSet resultSet, int i) throws SQLException {
System.out.println(resultSet.toString());
return new Project(resultSet.getInt("project_id"), resultSet.getString("project_name"),
resultSet.getString("project_description"), new Category(resultSet.getInt("category_id"),
resultSet.getString("category_name")),
resultSet.getString("project_link"), resultSet.getString("project_qa"));
}
错误:
Caused by: org.postgresql.util.PSQLException: The column name category_id was not found in this ResultSet.
答案 0 :(得分:2)
执行语句后ResultSet
不包含任何元素。要获取第一行信息,您需要执行rs.next()
。
这是ResultSet
值的简单迭代。
boolean hasValue = false;
while(resultSet.next())
{
hasValue = true;
out.println(resultSet.getString("column_name");
out.println(resultSet.getInt("column_name");
}
if(hasValue)
out.println("Result set has values inside of it");
else out.println("Result set has no values inside of it");
只要在resultSet
变量中包含一些值,就需要迭代它以获得下一个值。默认情况下,执行查询后,您内部没有值,因为它可能没有值。
编辑:
ResultSetMetaData metaData = resultSet.getMetaData();
int count = metaData.getColumnCount(); //number of column
String columnName[] = new String[count];
for (int i = 1; i <= count; i++)
{
columnName[i-1] = metaData.getColumnLabel(i));
}
这为您提供了列名,如果这是您想要的。
答案 1 :(得分:0)
通过ResultSetMetaData
从结果集中获取ResultSet.getMetaData()
。
ResultSetMetaData
有方法getColumnCount
和getColumnName
来枚举列名。