2016-07-18 110 views
-2

我试图实施应该从表中检索数据和JSON格式返回结果Web服务的Java方法。为此,我使用json_agg()函数将查询结果转换为我想要显示的json,但到目前为止它显示的格式不正确。下面是该方法本身:正确的显示转换SQL结果集为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; 
} 

控制台显示以下结果:

[email protected] 

任何帮助,将不胜感激。

+0

*,但它显示格式错误到目前为止*,这意味着绝对没有。 –

+1

也就是的ToString()的'默认输出''上和Object'不正确的事情上'ResultSet'打电话,只看了'ResultSet'的源代码,它只是没有在'Object'默认。我认为你需要阅读关于你想要做什么的文档,或者如果你已经有了。 –

回答

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教程的所有解释:

+0

感谢您的帮助和学习来源。 – Dozent