从JDBC获取结果并转换为JsonObject

时间:2015-06-18 21:48:39

标签: java jdbc jsonobject

我试图从我的JDBC中获取结果并将它们转换为Json对象,我发现很难做到......这就是我所拥有的

Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
    con=DB.getConnection();
    String query = "Select city,state from zips where zip=10012";
    ps=con.prepareStatement(query);
    String line="";
    while(rs.next())
    {
        line=  rs.getArray("city").toString();
    }
    JSONObject jsonObj = new JSONObject(line);

正如您所看到的,我正在尝试获取while循环的结果并将它们放入String变量中,然后将其放入JsonObject中。

这显然不起作用,有人有什么建议吗?我一直在四处寻找并调整此代码,但没有任何效果。

如果它有所不同我使用的是Java 1.8 JDK 数据库连接有效,我在MySQL中尝试过该查询,因此它显然是代码中的一部分。

更新 当我检查查看输出时,我得到一个空白页面。我想在Json中使用它的原因是因为这应该是android的一个宁静的服务。 rs.next()用于循环以从查询中获取所有结果。

1 个答案:

答案 0 :(得分:0)

这是我写的一个子程序,可以解决你的问题。至少它适用于我,使用PostgreSQL。请注意,它会创建JSONObject的JSONArray。因此,如果您将其转换为字符串,您将得到类似的结果:[{" city":" Berlin"," state":" Berlin& #34;},{" city":" Tucson"," state":" Arizona"},...]。

 public JSONArray table2json(ResultSet rs) throws Exception {
  JSONArray jsArray = new JSONArray();        
        int columns = rs.getMetaData().getColumnCount();
        while (rs.next()) {
            JSONObject obj = new JSONObject();
            for (int i = 1; i <= columns; i++) {
                Object tempObject=rs.getObject(i);
                obj.put(rs.getMetaData().getColumnLabel(i), tempObject);
            }
            jsArray.put(obj);
        }
        return jsArray;