我试图从我的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()用于循环以从查询中获取所有结果。
答案 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;