String OrderSelect = "select * from Order where  USER_ID=?  ";      
           ConnManage.openTransaction();

ConnManage.commit();
 //执行OrderSelect语句
            PreparedStatement pst = con.prepareStatement(OrderSelect);
            
            pst.setInt(1, USER_ID);
           
            ResultSet rs = pst.executeQuery(); 
            
            List list = new ArrayList(); 
            
            OrderVo odv;

while(rs.next()){                          odv = new OrderVo();                          odv.setOrder_id(rs.getInt(1));
  odv.setOrder_state(rs.getString(2));
  odv.setOrder_send_per(rs.getString(3));                          ...                       list.add(odv);
                      return list
}
我写的代码现在出现这个问题,就是
while(rs.next()){这里的东西不会执行,我测试过了。然后list里面也是空。
我看不出来代码有什么问题,请教各位。
我的SQL语句在数据库中式正常的,可以查询到结果。USER_ID也是可以取到的。

解决方案 »

  1.   

    1.rs.next从未执行一次,楼主新建的list对象当然size=0
    2.不知道楼主这是啥,是自己封装的jdbc还是什么hibernate之类的东东
    3.如果是自己封装的jdbc,用上事务的话要设置Connection的自动提交为false,另外看代码的样子好像楼主刚开启了事务就提交了,而后面的ps执行查询却是在事务提交之后,这个地方很有问题。如果楼主自己封装了jdbc,那建议先尝试下设置Connection的自动提交为false,再把后面几步对数据库的操作放在事务开启之后,提交之前。
      

  2.   

    String OrderSelect = "select * from Order where  USER_ID=?  ";      
              ConnManage.openTransaction();  
    //执行OrderSelect语句 
                PreparedStatement pst = con.prepareStatement(OrderSelect); 
                
                pst.setInt(1, USER_ID); 
              
                ResultSet rs = pst.executeQuery(); 
                ConnManage.commit();
                List list = new ArrayList(); 
                
                OrderVo odv; while(rs.next()){                           odv = new OrderVo();                           odv.setOrder_id(rs.getInt(1)); 
      odv.setOrder_state(rs.getString(2)); 
      odv.setOrder_send_per(rs.getString(3));                           ...                       list.add(odv); 
                          return list 

      

  3.   

    Epiphone  谢谢您 呵呵  我找到问题了。