虽然听说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; } } } }
相关推荐
<%...charset=8859_1″ %><%//变量声明java.sql.Connection sqlCon; //数据库连接对象java.sql.Statement sqlStmt;... //一页显示的记录数int intRowCount; //记录总数int intPageCount;
1)该分页组件不依赖任何底层数据库实现,可以根据需要扩展子类进行动态替换;2)同时也不提供页面如何显示上页,下页等;内部提供了源代码实现,以及DEMO应用,实现分页非常简单; 需要做的工作有三个地方 ...
功能:JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle --%> ;charset=8859_1" %> //变量声明 java.sql.Connection sqlCon; //数据库连接对象 java.sql.Statement sqlStmt; //SQL语句对象 ...
SQLServer中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。先来说说实现方式: 1、我们来假定...
Sybase ODBC Driver (From PcClient 12.5.4); 支持 WINXP,WIN7(含 64 bit)操作系统, 适用于 ADO 编程; 支持 set rowcount 语法。 压缩包内含有安装说明。
//设置一页显示的记录数 intPageSize = 2; //取得待显示页码 strPage = request.getParameter("page"); if(strPage==null){ //表明在QueryString中没有page这一个参数,此时显示第一页数据 intPage = 1; ...
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 数据表的内连接、...
数据库插入: 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--总行数不能整除每页...
分页private Integer currentPage; private Integer prePage; private Integer nextPage; private Integer rowCount; private Integer pageRows = 5;
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 (From PcClient 12.5.4); 支持 WINXP,WIN7(含 64 bit)操作系统, 适用于 ADO 编程; 支持 set rowcount 语法。 压缩包内含有安装说明。
JSP分页查询实例代码 ("GBK");%> ; charset=gb2312" %> *"%> *"%> *"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>分页显示例子</title> ...
设置是否显示分页的枚举< TD> < TR>"><BR> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设置要显示的页数< TD> < TR> &...
四个变量: int pageSize:每页显示多少条记录 int pageNow:希望显示第几页 int pageCount:一共有多少页 int rowCount:一共有多少条记录 说明:
rowCount函数对于DELETE, INSERT, 或者UPDATE语句的结果是正确的,但对于select语句则与数据库的实现相关。有些数据库在执行select语句时会将结果集全部读入内存,但对于数量巨大的结果集,这样显然是低效的。大部分的...
计数 = 行计数(值,查找值) ... 使用前在 matlab 中输入“mex rowcount.c”。 如果你的 matlab 没有安装它,你可能需要一个免费的编译器: http://www.mathworks.com/support/compilers/R2012b/win64.html
SQLServer中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。
PDOStatement::rowCount PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 int PDOStatement::rowCount ( void ) PDOStatement::rowCount()返回上一个由...