java jdbc如何正确地将数据添加到JsonObject中

时间:2015-07-01 01:58:40

标签: java jdbc jsonobject

我正在使用JDBC从MySQL数据库中检索2条记录并将它们转换为JsonObject但是代码无法正常工作,例如:我得到了这个结果

{"locations":[{"city":"OrlandoOrlando","state":"WVFL"}]}

而不是

{"locations":[{"city":"Orlando","state":"WV"},{"city":"Orlando","state":"WV"}]}

我知道我是如何得到的,但似乎可以找出如何纠正它,这是我的代码

String city="";
String state="";
try {
   JSONObject jo = new JSONObject();
   Connection conn = DB.getConnection();
   ResultSet rs;
  PreparedStatement ps = conn.prepareStatement("select city,state from zips limit 2");
   rs = ps.executeQuery();
   while (rs.next()) {
// The problem is in this area the: city+ and state+
       city+= rs.getString("city");
       state+= rs.getString("state");
   }
   jo.put("city",city);
   jo.put("state", state);
   JSONArray ja = new JSONArray();
   ja.put(jo);
   JSONObject mainObj = new JSONObject();
   mainObj.put("locations", ja);

问题出在城市+和州+字符串上面,但是如果我这样做

while (rs.next()) {
   city= rs.getString("city");
   state= rs.getString("state");
 }

它修复了所有内容,但只返回1条记录而不是2条,然后看起来像这样

{"locations":[{"city":"Orlando","state":"WV"}]}

任何建议都会很棒..

2 个答案:

答案 0 :(得分:0)

我已经通过这种方式进行了更改,以便从SQL输出构建JSONArray。

JSONObject jo = new JSONObject();
Connection conn = DB.getConnection();
ResultSet rs;
PreparedStatement ps = conn.prepareStatement("select city,state from zips limit 2");
rs = ps.executeQuery();
JSONArray ja = new JSONArray();
while (rs.next()) {
    jo.put("city", rs.getString("city"));
    jo.put("state", rs.getString("state"));
    ja.put(jo);
}

JSONObject mainObj = new JSONObject();
mainObj.put("locations", ja);

答案 1 :(得分:-1)

JSONObject jo = null;
Connection conn = DB.getConnection();
ResultSet rs;
PreparedStatement ps = conn.prepareStatement("select city,state from zips limit 2");
rs = ps.executeQuery();
JSONArray ja = new JSONArray();
while (rs.next()) {
    jo = new JSONObject();
    jo.put("city", rs.getString("city"));
    jo.put("state", rs.getString("state"));
    ja.put(jo);
}
JSONObject mainObj = new JSONObject();
mainObj.put("locations", ja);