struts返回json数据时返回的数据重复

 使用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();//如果有记录,再将指针指向第一条(需要设置结果集类型)

 

相关推荐