如何查看java中的数据库JDBC ResultSet内部是什么

时间:2016-01-24 16:10:05

标签: java servlets jdbc resultset

我收到一条错误消息,指出从数据库返回的 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.

2 个答案:

答案 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有方法getColumnCountgetColumnName来枚举列名。