`

通过设置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;
   }
  }
 }
}
 
分享到:
评论

相关推荐

    JSP数据库操数据分页显示

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

    通用分页组件

    1)该分页组件不依赖任何底层数据库实现,可以根据需要扩展子类进行动态替换;2)同时也不提供页面如何显示上页,下页等;内部提供了源代码实现,以及DEMO应用,实现分页非常简单; 需要做的工作有三个地方 ...

    jsp + oracle分页简单实用

    功能:JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle --%> ;charset=8859_1" %> //变量声明 java.sql.Connection sqlCon; //数据库连接对象 java.sql.Statement sqlStmt; //SQL语句对象 ...

    SQL ASP.NET高性能分页

    SQLServer中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。先来说说实现方式: 1、我们来假定...

    Sybase ODBC Driver 12.5.4

    Sybase ODBC Driver (From PcClient 12.5.4); 支持 WINXP,WIN7(含 64 bit)操作系统, 适用于 ADO 编程; 支持 set rowcount 语法。 压缩包内含有安装说明。

    jsp 分页代码大全

    //设置一页显示的记录数 intPageSize = 2; //取得待显示页码 strPage = request.getParameter("page"); if(strPage==null){ //表明在QueryString中没有page这一个参数,此时显示第一页数据 intPage = 1; ...

    SQL语句生成及分析器(中文绿色)

    Limit(MySQL),Set RowCount(Sybase)) 3.1.3 字段表达式或者计算字段 3.2 选择表 (From) 3.3 条件筛选 (Where) 3.4 分组 (Group By) 3.5 组内条件 (Having) 3.6 排序 (Order By) 3.7 数据表的内连接、...

    java分页int pageSize:每页显示多少条记录

    数据库插入: insert into 表名(字段1,2,。。。)select 字段1,2,...from 表名 ) 查询语句 select top pageSize字段名列表from表名where id not in (select top pageSize*(pageNow-1)id from 表名) 以我们前面的...

    分页存储过程

    SELECT @rowCount = COUNT(ID) FROM News--查找表来设置总行数 IF((@rowCount)%(@pageSize) = 0)--如果总行数正好能整除每页容量,页数就是商 SET @pageCount = (@rowCount) / (@pageSize) ELSE--总行数不能整除每页...

    java分页的工具类

    分页private Integer currentPage; private Integer prePage; private Integer nextPage; private Integer rowCount; private Integer pageRows = 5;

    sql语句生成与分析器.rar

    Limit(MySQL),Set RowCount(Sybase)) 3.1.3 字段表达式或者计算字段 3.2 选择表 (From) 3.3 条件筛选 (Where) 3.4 分组 (Group By) 3.5 组内条件 (Having) 3.6 排序 (Order By) 3.7 数据表的内连接、...

    sybase_odbc_driver_12.5.4

    Sybase ODBC Driver (From PcClient 12.5.4); 支持 WINXP,WIN7(含 64 bit)操作系统, 适用于 ADO 编程; 支持 set rowcount 语法。 压缩包内含有安装说明。

    JSP分页查询实例代码.doc

    JSP分页查询实例代码 ("GBK");%> ; charset=gb2312" %> *"%> *"%> *"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>分页显示例子</title> ...

    分页技术page

    设置是否显示分页的枚举< TD> < TR>"><BR>           设置要显示的页数< TD> < TR> &...

    java分页技巧1

    四个变量: int pageSize:每页显示多少条记录 int pageNow:希望显示第几页 int pageCount:一共有多少页 int rowCount:一共有多少条记录 说明:

    浅谈PDO的rowCount函数

    rowCount函数对于DELETE, INSERT, 或者UPDATE语句的结果是正确的,但对于select语句则与数据库的实现相关。有些数据库在执行select语句时会将结果集全部读入内存,但对于数量巨大的结果集,这样显然是低效的。大部分的...

    rowcount:计算 LOOKUPVALUES 中与 VALUES 中的每一行匹配的行数并返回计数。-matlab开发

    计数 = 行计数(值,查找值) ... 使用前在 matlab 中输入“mex rowcount.c”。 如果你的 matlab 没有安装它,你可能需要一个免费的编译器: http://www.mathworks.com/support/compilers/R2012b/win64.html

    sqlserver 高性能分页实现分析

    SQLServer中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。

    PHP PDOStatement::rowCount讲解

    PDOStatement::rowCount PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 int PDOStatement::rowCount ( void ) PDOStatement::rowCount()返回上一个由...

Global site tag (gtag.js) - Google Analytics