`
liuzm
  • 浏览: 101487 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

采用JDBC进行数据库分页查询( ResultSet.TYPE_SCROLL_INSENSITIV

    博客分类:
  • JAVA
阅读更多
以下是采用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
分享到:
评论

相关推荐

    采用JDBC进行数据库分页查询

    一次只从数据库中查询最大maxCount条记录 ... PreparedStatement pstat = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); //最大查询到第几条记录.........

    Db.rar_滚动

    对于大结果集,通常使用`ResultSet.TYPE_SCROLL_SENSITIVE`或`ResultSet.TYPE_SCROLL_INSENSITIVE`来创建可滚动的结果集,前者对数据库的修改敏感,后者不敏感。 5. **分页和数据流**:在处理大量数据时,数据滚动...

    JDBC使用游标实现分页查询的方法

    本篇文章将详细介绍如何利用JDBC和游标实现分页查询,并通过两个示例代码进行解析。 1. **游标类型** - ResultSet.TYPE_FORWARD_ONLY:这是默认的游标类型,只能向前遍历结果集,不可滚动,效率较高。 - ...

    com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作 解决方案

    在数据库连接池配置中,确保JDBC连接的`ResultSet`类型被设置为支持分页操作的类型,如`TYPE_SCROLL_INSENSITIVE`或`TYPE_SCROLL_SENSITIVE`。 ### 总结 在处理数据库操作时,理解不同类型的查询结果集及其适用...

    jsp数据库分页查询及显示

    sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM userTable"); } catch (SQLException e) { out.print("数据库连接失败"); } `...

    目前最好的JSP分页技术

    这些原生的分页技术往往比通用的JDBC分页更高效: - **MySQL的LIMIT**:通过限制查询结果的数量,可以有效地实现分页,语法如`SELECT * FROM table LIMIT offset, rows`。 - **Oracle的ROWNUM**:ROWNUM为每一行...

    在JDBC,hibernate中实现分页

    由于直接在SQL Server 2005中实现分页可能不如在应用层实现灵活,这里采用了一种称为“假分页”的方式,即先获取所有数据,再在应用程序端进行过滤处理。 ##### 示例代码解析 ```java public class PageBean { ...

    STRUTS +JDBC关于分页的问题

    Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { ...

    JSP连接SQL数据库实现数据分页显示

    Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = stmt.executeQuery("SELECT * FROM stuInfo"); ``` 2. **计算总记录数和总页数**:遍历...

    JSP分页技术文档下载

    JSP分页技术是Web开发中处理大量数据展示的关键手段,尤其在数据库查询结果需要按页展示时。本文档主要探讨如何在JSP中实现高效、兼容性好的分页功能。 首先,JDBC(Java Database Connectivity)规范在早期版本中...

    目前最好的JSP分页技术.txt

    - **双向滚动ResultSet**:JDBC 2.0引入了TYPE_SCROLL_INSENSITIVE类型的ResultSet,它允许开发者向前或向后移动记录指针。 - **分页查询**:虽然JDBC 2.0没有直接提供分页查询的支持,但可以通过结合使用双向滚动...

    java一次性查询处理几百万数据解决方法

    1. **分批处理**:避免一次性加载所有数据到内存中,而是采用分批次的方式进行查询和处理。 2. **合理设置查询参数**:例如设置`setFetchSize`来控制每次获取的数据量,减少内存压力。 3. **结果集的优化**:使用...

    Jsp分页技术

    其中 `ResultSet.TYPE_SCROLL_SENSITIVE` 表示结果集可以滚动,并且对数据库的变化敏感。 **常用方法:** - `rs.absolute(n)`:将指针跳到第 n 行。 - `rs.relative(n)`:将指针相对向下或向上 n 行。 - `rs.first...

    JDBC API 参考教程第三版

    - **结果集缓存**:使用ResultSet.TYPE_SCROLL_INSENSITIVE和ResultSet.CONCUR_UPDATABLE提高性能。 - **批处理和分页**:优化大数据量操作,减少服务器压力。 - **JDBC连接池**:如C3P0、HikariCP等,有效管理...

    JSP分页查询实例代码.doc

    本文将对“JSP分页查询实例代码”进行详细解析。此实例展示了如何在JavaServer Pages(简称JSP)中实现基本的分页功能,具体包括:设置字符编码、加载数据库驱动、建立数据库连接、执行SQL查询以及处理分页逻辑等。 ...

    目前最好的分页技术 JSP

    在处理数据库查询时,经常需要使用分页功能来提高数据展示的效率及用户体验。然而,标准的JDBC并未提供良好的分页机制,因此开发者们需要寻找或创造其他方式来实现这一功能。本文将介绍几种常用的JSP分页技术,并...

    数据库面试题

    `ResultSet.TYPE_SCROLL_SENSITIVE`和`ResultSet.CONCUR_UPDATABLE`表示创建可滚动和可更新的结果集。 6. **分页算法**:代码首先计算总记录数(`rowCount`),然后根据每页显示的记录数(`pageSize`)计算总页数...

    jsp分页技术

    这里使用的是`ResultSet.TYPE_SCROLL_INSENSITIVE`类型的结果集,这种类型的结果集可以在查询结果中前后移动。 ```java int pageSize = 6; // 定义每页显示的记录数 int pageCount; // 定义分页后总页数变量 int ...

    目前最好的JSP分页

    - **JDBC 1.0的局限性**:最初版本的JDBC规范中,ResultSet对象仅支持向前移动,这意味着开发者无法在一次查询后获取结果集的总大小,这对于分页来说是个重大障碍。 - **JDBC 2.0的改进**:随着JDBC 2.0的发布,...

    实验4 附加_分页显示1

    总结来说,本实验通过Java的JDBC技术展示了如何使用Statement对象进行分页查询,以及如何通过调整Statement类型实现可滚动结果集,以适应不同的需求。这两种方法都是数据库开发中常见的分页策略,适用于处理大量数据...

Global site tag (gtag.js) - Google Analytics