正确显示将 SQL 结果集转换为 JSON
Proper display converted SQL resultset into JSON
我正在尝试为 Web 服务实施 java 方法,该方法应从 table 检索数据,return 结果为 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
如有任何帮助,我们将不胜感激。
您需要遍历 ResultSet
并检索每个 列 。 ResultSet
实例是 而不是 您的实际结果,它是结果的容器。您的查询 return 是一列,因此您可以通过索引 1 访问该内容(JDBC 列索引从 1 开始,而不是 Java 中通常的 0)。要将结果集移动到下一行,您需要使用 next()
ResultSet rs = prepStmt.executeQuery();
if (rs.next()) {
System.out.println(rs.getString(1));
}
通常您会使用 while()
循环遍历 ResultSet
中的所有行,但由于聚合,您的查询只会 return 单个行,因此没有必要这样做。您确定 真的 想要 table 的 所有 行作为一个巨大的 JSON 文档。如果 table 包含一百万行怎么办?
Java JDBC 教程中对此进行了全部解释:
我正在尝试为 Web 服务实施 java 方法,该方法应从 table 检索数据,return 结果为 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
如有任何帮助,我们将不胜感激。
您需要遍历 ResultSet
并检索每个 列 。 ResultSet
实例是 而不是 您的实际结果,它是结果的容器。您的查询 return 是一列,因此您可以通过索引 1 访问该内容(JDBC 列索引从 1 开始,而不是 Java 中通常的 0)。要将结果集移动到下一行,您需要使用 next()
ResultSet rs = prepStmt.executeQuery();
if (rs.next()) {
System.out.println(rs.getString(1));
}
通常您会使用 while()
循环遍历 ResultSet
中的所有行,但由于聚合,您的查询只会 return 单个行,因此没有必要这样做。您确定 真的 想要 table 的 所有 行作为一个巨大的 JSON 文档。如果 table 包含一百万行怎么办?
Java JDBC 教程中对此进行了全部解释: