我正在尝试为Web服务实现java方法,该方法应该从表中检索数据并以json格式返回结果。为此,我使用json_agg()函数将查询结果转换为我想要显示的json,但到目前为止它以错误的格式显示。这是方法本身:
public String GetRowsFromTable() throws SQLException {
Connection connection = null;
String result = "";
try {
connection = Connection.getConnection();
PreparedStatement prepStmt = conn.prepareStatement("SELECT json_agg(table1) FROM table");
ResultSet rs = prepStmt.executeQuery();
result += rs;
System.out.println(rs);
} catch (SQLException sqlex) {
sqlex.printStackTrace();
} finally {
connection.close();
}
return result;
}
控制台显示以下结果:
org.postgresql.jdbc.PgResultSet@5179f609
任何帮助都将不胜感激。
答案 0 :(得分:2)
您需要遍历ResultSet
并检索每个列。 ResultSet
实例不您的实际结果是结果的容器。您的查询返回一列,因此您可以通过索引1访问该内容(JDBC列索引从1开始,而不是像往常一样在Java中)。要将结果集移动到下一行,您需要使用next()
ResultSet rs = prepStmt.executeQuery();
if (rs.next()) {
System.out.println(rs.getString(1));
}
通常,您将使用while()
循环来迭代ResultSet
中的所有行,但由于聚合,您的查询将只返回单行,因此不需要。您确定确实希望所有行作为单个巨大的JSON文档。如果表包含一百万行怎么办?
Java JDBC教程中对此进行了解释: