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

急 求解 为什么ResultSet.next只会执行一遍
public List<cytg> getFyCytg(int dq, int myxs) {
List<cytg> ls=new ArrayList<cytg>();
String sql="select * from (select a.*, rownum r from(select * from cytg ) a where rownum <=?) where r >?";
this.getCon();
try {
pst=con.prepareStatement(sql);
pst.setInt(1, dq*myxs);
pst.setInt(2, (dq-1)*myxs);
rst=pst.executeQuery();
while(rst.next()){
cytg a=new cytg();
a.setId(rst.getInt(1));
a.setTitle(rst.getString(2));
a.setYzje(rst.getDouble(3));
a.setNr(rst.getString(4));
int tg=rst.getInt(5);
a.setTgr(tg);
a.setType(rst.getInt(6));
String name=getTgr(tg);
// a.setTgrname(name);
ls.add(a);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return ls;

我在数据库中查询条目是23条 但是while(rst.next())只会执行一次 就不执行了

------解决方案--------------------
你先 rst.getMetaData().getColumnCount()看看多少条
------解决方案--------------------
怀疑你检索出来的结果集就是1条。
------解决方案--------------------
是不是执行完第一个循环,处理数据的时候出错了,进到了catch块里面,然后换回了List,能debug看下数据吗。
------解决方案--------------------
好奇怪。真奇怪。
------解决方案--------------------
可能两种情况:
1、你要相信查出来的结果就一条
2、第一次执行的过程中有报错
------解决方案--------------------
你的dp,myxs值是多少? (dp-1)*myxs为多少 把这个sql语句直接在数据库客户端里面的执行一下看看是多少这里就是多少了?你代码没有问题。