1.getRow()
2.absolute( int row )
2.absolute( int row )
解决方案 »
- jsp+servlet 上传图片 源码,要有注解,不然我怎么看?
- prepareStatement模糊查询,模糊查询,模糊查询,模糊查询,
- 用Integer.parseInt(JOptionPane.showInputDialog就把DOS卡住了
- 大家帮忙看一下这个程序吧,我有两个问题,谢谢了!
- 一个奇怪的 java问题,高手进来帮帮我呀
- 如何得到本地计算机的网络状态,比如网络是否通,数据上传和下发速率...
- 关于如何实现JSP 用户权限的问题
- 这是为何?(在线等待!!!)
- 疑难,高手请进
- 关于jb6。0连oracle8。17所出现的问题。帮帮忙啊!!!!!!!!
- jar的问题?最简单app.jar
- 关于JRE的问题
int rowCount = rs.getRow()+1;//获得全部记录数量
/***************************
rs.absolute( int row );//定位
但是我在用rs.last()和rs.first()的时候,编译的时候没有问题,但是运行的时候就抛出异常:对只转发结果集的无效操作!这是为什么呀?
实际上我以前就是用next()循环来定位第n页面的记录,不过后来用absolute()确实快了很多,用
next()的时间长短取决于循环次数,但absolute()和记录的位置无关,任何位置只须同样的很短的时间
但是我在用rs.last()和rs.first()的时候,编译的时候没有问题,但是运行的时候就抛出异常:对只转发结果集的无效操作!这是为什么呀?
你的程序,异常信息,异常时的数据库状况
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
try{
int count = 0;
int loopCount=0;
conn = DbConnect.getInstance().getConnection();
stmt = conn.createStatement();
rset = stmt.executeQuery(sql); if(rset.next()){
boolean isLast=rset.last();
count=rset.getRow()+1;
}
else{
count=0;
}
rset.first();
rset.absolute(index);
......
}
catch(Exception e){
System.out.println("the Exception is : "+e.getMessage());
}
finally{
try {
if(conn != null) conn.close();
if(rset != null) rset.close();
if(stmt != null) stmt.close();
} catch (SQLException ex) {}
}
还有就是不推荐使用查询所有记录然后用last(),然后用getrow(),因为last()所用时间完全和rs.next()循环到最后一条记录所用时间一样推荐:
1.先建立一个查询所有记录的sql ,比如select count(*) ...
然后取出记录数.这样当你记录数大(5000条记录以上就可以明显看出差别了)的时候就可以节省很多时间了.
2.再建立你需要的查询,然后用absolute(int n)(其实它所用的时间完全和你用循环结合next()一样)跳到你需要的记录.
DBConnect dbc=new DBConnect(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
用absolute()和next()+循环时间完全一样!!!! 数据库是oracle817,你不信可以自己做测试!