如何在 java 中查看数据库 JDBC ResultSet 中的内容

How to view what is inside database JDBC ResultSet in java

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

执行语句后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)); 
}

这会为您提供列名,如果这是您想要的。

通过ResultSet.getMetaData()从结果集中得到一个ResultSetMetaData

ResultSetMetaData 有方法 getColumnCountgetColumnName 来枚举列名。