代码之家  ›  专栏  ›  技术社区  ›  ovod

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

  •  0
  • ovod  · 技术社区  · 9 年前

    我收到一个错误,说有些 string 结果集 从数据库返回。现在我有一个问题:我如何才能看到 结果集 ?

    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 回复  |  直到 9 年前
        1
  •  2
  •   Simply Me    9 年前

    这个 ResultSet 执行语句后不包含任何元素。要获得第一行信息,您需要 rs.next() .

    下面是对 结果集 价值观

    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)); 
    }
    

    如果这是你想要的,这会给你列名称。

        2
  •  0
  •   wero    9 年前

    获取 ResultSetMetaData 从结果集通过 ResultSet.getMetaData() .

    这个 结果集元数据 有个方法 getColumnCount getColumnName 以枚举列名。