日期:2014-05-17  浏览次数:20798 次

struts2的json数据问题
帮看看为什么我这样写,只输出一行数据而不能输出数据库表“jq”里所有的数据呢?
主要代码如下:
String sql="select * from jq";
Connection con=BizDBUtil.getConnection();
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
 Map<String, Object> row = new HashMap<String, Object>();
if(rs.next()){
row.put("id", rs.getString(1));
row.put("userName", rs.getString(2));
row.put("gender", rs.getString(3));
row.put("email", rs.getString(4));
row.put("QQ", rs.getString(5));
row.put("mobilePhone", rs.getString(6));
row.put("birthday", rs.getString(7));
}
 JSONObject json=JSONObject.fromObject(row);
return json;
}
测试输出:
public static void main(String[] arge) throws Exception{
BizJqgridDAO dao=new BizJqgridDAOImpl();
JSONObject biz=dao.findAll();
System.out.println(biz);
只有一行代码而已 为什么呢?大家帮我改进一下

------解决方案--------------------
肯定是一行数据,rs中有很多数据 map 只存放了最后一行数据,你的map没用list 包装,多思考,其实问题发现很简单
------解决方案--------------------
循环不能用if,要用while,用if的话这句代码只会走一次,所以只输出一行记录而且是第一行的记录,不过你就算改为while,但你的map里Value放的不是对象,而是String,也就是楼上说的没封装,每次while循环,key的值都会被后面的值覆盖,最后输出还是只有一行记录不过是最后一行记录而已,总之,两个问题:
①while循环
②将每一行记录也就是每条row(包含id,userName,gender等字段)封装成一个对象put进map
------解决方案--------------------
做成   
List<Map> mapList = new Arraylist<Map>();
while (rs.next()){
  
Map<String,String> map = new ...

mapList.add(map)
}