以下是采用JDBC进行数据库分页查询例子
其实也是结合的说明下
// ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。
// ResultSet.TYPE_SCROLL_SENSITIVE:可滚动。当其他用户更改数据库时这个记录也会改变。
这二个属性的应用,希望也启到一点作用
代码都有说明,可以参考下
/**
* 一次只从数据库中查询最大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();
}
}
本篇文章来源于 :刘志猛博客 原文链接:http://www.liuzm.com/article/java/9630.htm
博客:
http://www.liuzm.com
分享到:
相关推荐
一次只从数据库中查询最大maxCount条记录 ... PreparedStatement pstat = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); //最大查询到第几条记录.........
对于大结果集,通常使用`ResultSet.TYPE_SCROLL_SENSITIVE`或`ResultSet.TYPE_SCROLL_INSENSITIVE`来创建可滚动的结果集,前者对数据库的修改敏感,后者不敏感。 5. **分页和数据流**:在处理大量数据时,数据滚动...
本篇文章将详细介绍如何利用JDBC和游标实现分页查询,并通过两个示例代码进行解析。 1. **游标类型** - ResultSet.TYPE_FORWARD_ONLY:这是默认的游标类型,只能向前遍历结果集,不可滚动,效率较高。 - ...
在数据库连接池配置中,确保JDBC连接的`ResultSet`类型被设置为支持分页操作的类型,如`TYPE_SCROLL_INSENSITIVE`或`TYPE_SCROLL_SENSITIVE`。 ### 总结 在处理数据库操作时,理解不同类型的查询结果集及其适用...
sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM userTable"); } catch (SQLException e) { out.print("数据库连接失败"); } `...
这些原生的分页技术往往比通用的JDBC分页更高效: - **MySQL的LIMIT**:通过限制查询结果的数量,可以有效地实现分页,语法如`SELECT * FROM table LIMIT offset, rows`。 - **Oracle的ROWNUM**:ROWNUM为每一行...
由于直接在SQL Server 2005中实现分页可能不如在应用层实现灵活,这里采用了一种称为“假分页”的方式,即先获取所有数据,再在应用程序端进行过滤处理。 ##### 示例代码解析 ```java public class PageBean { ...
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { ...
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = stmt.executeQuery("SELECT * FROM stuInfo"); ``` 2. **计算总记录数和总页数**:遍历...
JSP分页技术是Web开发中处理大量数据展示的关键手段,尤其在数据库查询结果需要按页展示时。本文档主要探讨如何在JSP中实现高效、兼容性好的分页功能。 首先,JDBC(Java Database Connectivity)规范在早期版本中...
- **双向滚动ResultSet**:JDBC 2.0引入了TYPE_SCROLL_INSENSITIVE类型的ResultSet,它允许开发者向前或向后移动记录指针。 - **分页查询**:虽然JDBC 2.0没有直接提供分页查询的支持,但可以通过结合使用双向滚动...
1. **分批处理**:避免一次性加载所有数据到内存中,而是采用分批次的方式进行查询和处理。 2. **合理设置查询参数**:例如设置`setFetchSize`来控制每次获取的数据量,减少内存压力。 3. **结果集的优化**:使用...
其中 `ResultSet.TYPE_SCROLL_SENSITIVE` 表示结果集可以滚动,并且对数据库的变化敏感。 **常用方法:** - `rs.absolute(n)`:将指针跳到第 n 行。 - `rs.relative(n)`:将指针相对向下或向上 n 行。 - `rs.first...
- **结果集缓存**:使用ResultSet.TYPE_SCROLL_INSENSITIVE和ResultSet.CONCUR_UPDATABLE提高性能。 - **批处理和分页**:优化大数据量操作,减少服务器压力。 - **JDBC连接池**:如C3P0、HikariCP等,有效管理...
本文将对“JSP分页查询实例代码”进行详细解析。此实例展示了如何在JavaServer Pages(简称JSP)中实现基本的分页功能,具体包括:设置字符编码、加载数据库驱动、建立数据库连接、执行SQL查询以及处理分页逻辑等。 ...
在处理数据库查询时,经常需要使用分页功能来提高数据展示的效率及用户体验。然而,标准的JDBC并未提供良好的分页机制,因此开发者们需要寻找或创造其他方式来实现这一功能。本文将介绍几种常用的JSP分页技术,并...
`ResultSet.TYPE_SCROLL_SENSITIVE`和`ResultSet.CONCUR_UPDATABLE`表示创建可滚动和可更新的结果集。 6. **分页算法**:代码首先计算总记录数(`rowCount`),然后根据每页显示的记录数(`pageSize`)计算总页数...
这里使用的是`ResultSet.TYPE_SCROLL_INSENSITIVE`类型的结果集,这种类型的结果集可以在查询结果中前后移动。 ```java int pageSize = 6; // 定义每页显示的记录数 int pageCount; // 定义分页后总页数变量 int ...
- **JDBC 1.0的局限性**:最初版本的JDBC规范中,ResultSet对象仅支持向前移动,这意味着开发者无法在一次查询后获取结果集的总大小,这对于分页来说是个重大障碍。 - **JDBC 2.0的改进**:随着JDBC 2.0的发布,...
总结来说,本实验通过Java的JDBC技术展示了如何使用Statement对象进行分页查询,以及如何通过调整Statement类型实现可滚动结果集,以适应不同的需求。这两种方法都是数据库开发中常见的分页策略,适用于处理大量数据...