您的位置:首页 > 其它

JDBC利用游标分页查询

2014-12-02 15:06 309 查看
参考:
http://blog.csdn.net/xieyuooo/article/details/28911641 http://www.blogjava.net/supercrsky/articles/221755.html

/**


* 一次只从数据库中查询最大maxCount条记录


* @param sql 传入的sql语句


* @param startNo 从哪一条记录开始


* @param maxCount 总共取多少条记录


*/


public void getData(String sql,int startNo,int maxCount){


Connection conn = ConnectionUtil.getConnection();


try {


// conn.prepareStatement(sql,游标类型,能否更新记录);


// 游标类型:


// ResultSet.TYPE_FORWORD_ONLY:只进游标


// ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。


// ResultSet.TYPE_SCROLL_SENSITIVE:可滚动。当其他用户更改数据库时这个记录也会改变。


// 能否更新记录:


// ResultSet.CONCUR_READ_ONLY,只读


// ResultSet.CONCUR_UPDATABLE,可更新


PreparedStatement pstat = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);


//最大查询到第几条记录


pstat.setMaxRows(startNo+maxCount-1);


ResultSet rs = pstat.executeQuery();


//将游标移动到第一条记录


rs.first();


// 游标移动到要输出的第一条记录


rs.relative(startNo-2);


while(rs.next())


System.out.println(rs.getInt(1));


} catch (SQLException e) {


e.printStackTrace();


}


}


/**


* 从数据库中查询所有记录,然后通过游标来获取所需maxCount条记录


* @param sql 传入的sql语句


* @param startNo 从哪一条记录开始


* @param maxCount 总共取多少条记录


*/


public void getDataFromAll(String sql,int startNo,int maxCount){


Connection conn = ConnectionUtil.getConnection();


try {


PreparedStatement pstat = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);


ResultSet rs = pstat.executeQuery();


rs.first();


rs.relative(startNo-1);


int i = startNo-1;


while(i < startNo + maxCount-1 && !rs.isAfterLast()){


System.out.println(rs.getInt(1));


i++;


rs.next();


}


} catch (SQLException e) {


e.printStackTrace();


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: