`

通过设置rowcount,从Sybase数据库中分页取数

阅读更多

        虽然听说Sybase12.5.3版本以上的已经支持top查询了,但现在还是有很多系统用的是比较老的Sybase数据库,这些版本的Sybase数据库不支持取前N条的查询语句。如Oracle的rownum,sql server的top,mysql的limit,db2与Derby的FETCH FIRST N ROWS ONLY(其中N即是你要取的前几条记录)。

  因为数据库能支持取前N条的查询语句,就可利用它很容易的实现分页取数。但针对Sybase12.5.3以前的版本,要实现分页取数就没有Oracle、sql server、mysql、db2、Derby等这些数据库方便了。
  如下是JAVA直接用jdts驱动,采用set rowcount方法实现从Sybase12.5.3以前的版本数据库中取数。
public class JdbcRowCountSybase {
 private static int pageSize = 10;
 
 public static void main(String[] args) {
  
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  try {
   // Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance();//通过jdbc方式连接
   Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance(); // 通过jtds方式连接
   // String url
   // ="jdbc:sybase:Tds:192.168.102.100:5000/test";//通过jdbc方式连接,test为数据库名
   String url = "jdbc:jtds:sybase://192.9.190.98:4100/inner_dbs";// 通过jtds方式连接,test为数据库名
   conn = DriverManager.getConnection(url, "emp", "empemp");
   stmt = conn.createStatement();
   
   //得到预取表的记录总条数
   int count = 0;
   String countSql = "select count(*) from lps_mst";
   rs = stmt.executeQuery(countSql);
   if(rs.next()) {
    count = rs.getInt(1);
   }   
   //设置rowcount大小,即每页大小
   String rowcountsql = "set rowcount " + pageSize;
   stmt.execute(rowcountsql);   
   //定义变量,在输出时显示第几条记录
   int i=1;
   //分页的主键值
   String pan = null;
   //分页取数的动态sql脚本
   String sql = null;
   //得到取数的总次数
   int top = count/pageSize + ((count%pageSize == 0) ? 0:1);
   for(int num=0;num
    if(pan != null) {
     sql = "select * from lps_mst where pan > '" + pan + "' order by pan";
    }else {
     sql = "select * from lps_mst order by pan";
    }
    rs = stmt.executeQuery(sql);
    while (rs.next()) {
     //记录分页取数的主键值,用于得到动态的sql脚本语句
     pan = rs.getString("pan");
     System.out.println("(" + i++ + ")" + "pan:" + pan);
     //System.out.println(pan);
    }
   }
   
   //设置rowcount大小为0,以便影响后续的取数
   rowcountsql = "set rowcount 0";
   stmt.execute(rowcountsql);
  } catch (InstantiationException e1) {
   e1.printStackTrace();
  } catch (IllegalAccessException e1) {
   e1.printStackTrace();
  } catch (ClassNotFoundException e1) {
   e1.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    rs.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }finally {
    rs = null;
   }
   try {
    stmt.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }finally {
    stmt = null;
   }
   try {
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }finally {
    conn = null;
   }
  }
 }
}
 
分享到:
评论

相关推荐

    sybase数据库命令指南

    通过上述内容的介绍,我们可以看到Transact-SQL在Sybase数据库中的重要性。掌握其基础构件块和常用命令不仅能够帮助我们更好地管理和操作数据库,还能够在实际工作中提高效率和减少错误。希望本文能够为学习和使用...

    JSP数据库操作例程 - 数据分页显示

    本文将深入解析一个基于Java Server Pages (JSP)实现的数据库操作例程,具体探讨如何在JSP中实现数据分页显示。 #### 一、环境配置与驱动加载 该例程首先通过`java.sql.DriverManager.registerDriver(new oracle....

    jsp 分页显示数据库查询等的源代码

    - 设置每页显示的记录数`intPageSize`为4,以及初始化变量如总记录数`intRowCount`,总页数`intPageCount`,当前页`intPage`。 - JDBC驱动装载与数据库连接建立: - 使用`Class.forName("sun.jdbc.odbc....

    jsp数据库分页对数据库里检索出来的数据进行分页

    - 初始化了与分页相关的变量,如`pageSize`(每页记录数)、`pageCount`(总页数)、`rowCount`(总记录数)和`pageNum`(当前页数)。 - 连接数据库,执行SQL查询,并处理结果集。 - 尝试使用`request.getParameter...

    PHP通用的数据库分页类

    1. **参数设置**:分页类应接受必要的参数,如每页显示的记录数(limit)和当前页数(page)。此外,可能还需要数据库连接信息,例如数据库类型、主机名、用户名、密码和数据库名。 2. **计算总页数**:分页类需要...

    最简单的SQL Server数据库存储过程分页

    ### 最简单的SQL Server数据库存储过程分页 #### 知识点概述 在处理大量数据时,分页查询是一项常见的需求。传统的T-SQL分页方法可能会导致性能问题,尤其是在面对百万级别的数据集时。本文介绍一种简单且高效的...

    QTableWidget,QTableView分页的分页栏

    它们在用户界面中常被用来展示表格数据,例如数据库中的记录或电子表格内容。然而,当数据量较大时,一次性显示所有数据可能会导致界面卡顿,用户体验下降。为了解决这个问题,我们可以实现分页功能,让数据分批次...

    java分页技巧1

    4. **rowCount**: 数据库中总的记录数。这个值是计算页面总数的基础,也是决定是否可以进行分页的依据。 实现Java分页功能通常涉及以下几个步骤: 1. **查询数据**: 首先,我们需要从数据库中获取数据,但不是一次...

    sql分页技术(三种方法)

    其中,分页技术是数据库查询中一个常见的需求,尤其是在网页应用中,为了提高用户体验,避免一次性加载过多数据导致页面响应缓慢,分页查询就显得尤为重要。本文将详细介绍三种在SQL中实现分页的技术,帮助读者更好...

    单数据集分页SQL实现层式报表

    分页SQL的关键在于根据不同页码来动态调整查询语句中从哪一条记录开始取数据,以及取多少条记录。对于非最后一页,可以按照“(页码 - 1)* 每页行数”来确定起始位置,对于最后一页,则需要获取剩余的所有记录。在...

    基于PHP实现数据分页显示功能

    在现代的Web开发中,数据分页是一项基本且重要的功能,特别是对于那些需要展示大量数据的后台管理系统。它不仅可以提高页面加载速度,还能提升用户体验,让管理大量数据变得更加高效。本文将详细介绍如何使用PHP来...

    数据库迁移资料,oracle移植到sybase的技术参考手册

    - Oracle中通过%ISOPEN、%NOTFOUND、%FOUND、%ROWCOUNT等属性检查游标状态,而在Sybase中可以使用全局变量`@@rowcount`来代替。 #### 结论 Oracle到Sybase的数据库迁移是一项复杂的工作,涉及到多个层面的转换和...

    PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例

    在本文中,我们将探讨如何使用PHP从PostgreSQL数据库中检索数据,并实现分页显示以及根据特定条件进行查找。PostgreSQL是一种强大的开源关系型数据库系统,而PHP作为服务器端脚本语言,常用于与数据库交互,构建动态...

    qt 实现数据库操作和显示

    通过Qt的模型视图组件,我们可以方便地与各种数据库进行交互,并将数据展示在用户友好的界面中。 首先,让我们了解Qt中的“模型”和“视图”概念。模型是数据的容器,负责存储、管理和更新数据。视图则负责展示模型...

    JSP数据库操数据分页显示

    <%...charset=8859_1″ %><%//变量声明java.sql.Connection sqlCon; //数据库连接对象java.sql.Statement sqlStmt;... //一页显示的记录数int intRowCount; //记录总数int intPageCount;

    JSP 分页数据库的数据的

    分页参数设置 - 每页显示的数量 `intPageSize`。 - 总记录数 `intRowCount`。 - 总页数 `intPageCount`。 - 当前页码 `intPage`。 #### 4. HTML 展示 使用 HTML 和 JSP 动态生成页面内容,包括表格结构和分页...

    SYBASE常用语句

    根据给定的文件信息,我们可以深入探讨Sybase中的常用语句及其应用,这将涵盖数据库的管理、查询优化、用户权限控制等多方面内容。 ### Sybase常用语句详解 #### 1. 数据库基本信息查询 - **`sp_helpdb`**:此...

    分页存储过程(用存储过程实现数据库的分页代码)

    在数据库管理中,分页是一种常见的数据检索方法,它允许用户逐步加载大量数据,从而提高网页或应用程序的性能。在大型数据集上,一次性加载所有数据可能会导致内存压力和响应时间过长,而分页则可以有效地解决这个...

    freemarker的分页功能

    - **PageSet类的设计**:`PageSet`类是管理分页状态的关键,它包含当前页码(`curPage`)、每页显示的行数(`rowSize`)、总记录数(`rowCount`)和总页数(`pageSize`)。`countMaxPage()`方法用于计算总页数,确保...

Global site tag (gtag.js) - Google Analytics