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

相关内容