使用struts架构使用自带的json包返回json数据时发现重复,代码改正后解决,如下:具体原因还是没有太清楚!记录下。
ResultSet rs=null;
GroupPurchasePackage groupPurchaseObj=new GroupPurchasePackage();
try {
conn=DBUtilsC3P0.getInstance().getConnection();
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
groupPurchaseObj.setId(Integer.parseInt(rs.getString("id")));
ResultSet rs=null;
try {
conn=DBUtilsC3P0.getInstance().getConnection();
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
GroupPurchasePackage groupPurchaseObj=new GroupPurchasePackage();
groupPurchaseObj.setId(Integer.parseInt(rs.getString("id")));
GroupPurchasePackage groupPurchaseObj=new GroupPurchasePackage();
在这里GroupPurchasePackage不能首先实例化 要在rs.next有结果的时候在实例化,不然当你返回值的时候一直都有值,只是并未被赋值而已rs是结果集。查询出的记录是一个列表,初始时指针指向的是第一条记录之前的。每rs.next()一次指针都会向后移动一位,指向下一条记录。如果没有设置结果集的参数,那么正常情况下结果集都只能往下走,不能退回,也就是rs.next()后,是不能再指向已经指过的记录了,但是如果设置了conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE,rs.CONCUR_READ_ONLY);那么就可以使用rs.first()、rs.last()等方法自己移动结果集指针,但是这种特性(可滚动结果集)是需要数据库支持的,好在现在大部分数据库都是支持的。rs.first();//如果有记录,再将指针指向第一条(需要设置结果集类型)