Java 6 RowSet 使用完全剖析(2)
Java 6 RowSet 使用完全剖析(2)
关键字: rowset
分页
由于 CachedRowSet 是将数据临时存储在内存中,因此对于许多 SQL 查询,会返回大量的数据。如果将整个结果集全部存储在内存中会占用大量的内存,有时甚至是不可行的。对此 CachedRowSet 提供了分批从 ResultSet 中获取数据的方式,这就是分页。应用程序可以简单的通过 setPageSize 设置一页中数据的最大行数。也就是说,如果页大小设置为 5,一次只会从数据源获取 5 条数据。下面的代码示范了如何进行简单分页操作。(分页部分代码默认 ORDERS 表中有 10 条数据)
清单 11. 分页代码一
Java代码
ResultSet rs = stmt.executeQuery(DBCreator.SQL_SELECT_ORDERS);
CachedRowSet cachedRS = new CachedRowSetImpl(); // 设置页大小
cachedRS.setPageSize(4);
cachedRS.populate(rs, 1);
while (cachedRS.nextPage()) { printRowSet(cachedRS); }
while (cachedRS.previousPage()) { printRowSet(cachedRS); }
ResultSet rs = stmt.executeQuery(DBCreator.SQL_SELECT_ORDERS);
CachedRowSet cachedRS = new CachedRowSetImpl(); // 设置页大小
cachedRS.setPageSize(4);
cachedRS.populate(rs, 1);
while (cachedRS.nextPage()) { printRowSet(cachedRS); }
while (cachedRS.previousPage()) { printRowSet(cachedRS); }
可以看到只需要在 populate 之前使用 setPageSize 设置页的大小,就可以轻松实现分页了。每次调用 nextPage 或 previousPage 进行翻页后,行游标都会被自动移动到当前页第一行的前面,并且只能在当前页内移动。这样我们对每一页都可以像新的数据集一样进行遍历,非常方便。这里需要注意的是:
用来填充 CachedRowSet 的 ResultSet 必须是可滚动的(Scrollable)。
populate 必须使用有两个参数的版本,否则无法进行分页。读者可以将 cachedRS.populate(rs, 1); 换成 cachedRS.populate(rs); 看看会有怎样的情况发生。
ResultSet rs 必须在遍历完毕后才能关闭,否则翻页遍历时会抛 SQLException。
我们注意到在使用分页遍历数据集时,nextPage
相关文档:
1,RuntimeException与CheckedException区别?
RuntimeException(也可以称为“未检查异常”unCheckedException)------该异常一般为程序员编程错误导致。<注意>Error也是“未检查异常”
例如:整除0(ArithmeticException);NullPoint ......
一个Java程序员应该掌握的10项技能
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、 HtmlConverter、jar、 java、javac、javadoc、javap、javaw、nati ......
作者 : 李志涛
邮箱地址 :lizhitao67116961@163.com
深圳优网科技有限公司
前几天看到有某位网友写了用http进行断点下载文件,但是网上没有看到ftp断点下载的文章或代码,现在本人写了一下。经过测试没有问题。请大家多多指教。如有疏漏的地方请各位技术友人指出。本人不胜感激。
package t ......
Java:
Simple HTTPUrlConnection example
package
ChinaCache;
import
java.io.BufferedReader;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.io.OutputStreamWriter;
import
java.net.HttpURLConnection;
import
java.net.MalformedURLEx ......
import java.text.*;
import java.util.*;
/**
*
* <p>
* Title: 通用工具类
* </p>
* <p>
* Description: 常用工具的集合,用来处理常见问题,比如中文乱码的方法等。
* </p>
* <p>
* Copyright: Copyright (c) 2003
* </p>
* <p>
* Company: Towery
* </ ......