RowSet子类:
RowSet接口下包含 JdbcRowSet,CatchedRowSet,FilteredRowSet,JionRowSet,WebRowSet.
除了JdbcRowSet以外,其他都是离线RowSet,并且CatchedRowSet是所有离线RowSet的父类,CatchedRowSet除了实现了Rowset接口外,还实现了Joinable接口。
RowSet作用:
RowSet非常重要的一个功能就是能对数据库进行离线操作,即在操作数据库数据是Connection不必一直处于打开状态,因为RowSet把数据加载到了JVM中,当然修改的数据提交时是要打开Connection的。
1.创建RowSet
以JdbcRowSet为例
RowSetFactory factory = RowSetProvider.newFactory();
JdbcRowSet jdbcRowSet = factory.creatJdbcRowSet();
2.RowSet获取数据方式(两种):
1.1 为RowSet传入数据库连接信息,指定sql语句,RowSet会查询数据并且返回数据。
jdbcRowSet.setUrl("xxxxx");
jdbcRowSet.setUserName("xxxxx");
jdbcRowSet.setPassWord("xxxxx");
jdbcRowSet.setCommand("xxxxx");//设置sql语句
2.2 为RowSet传入ResultSet对象
以cachedRowSet为例
cachedRowSet.populate(resultSet);//从resultSet中获取数据
//下面的对象的创建代码未列出,只是为力说明:CachedRowSet是离线的RowSet所以数据库连接相关的资源都可以释放。
resultSet.close();
statement.close();
connection.close();
3.离线RowSet的数据提交
//当然,对于离线操作,在jvm做的修改并不会同步到数据库,所以要再次为RowSet传入Connection
Connection conn = DriverManager.getConnection(url,username,password);
//打开事务
conn.setAutoCommit(false);
//提交修改
cachedRowSet.acceptChanges(conn);
RowSet具体用法与ResultSet差不多。
4.离线RowSet的分页操作
如果数据庞大,使用离线RowSet,内存可能吃不消,甚至导致数据溢出,这个时候就要对RowSet进行分页。
基本方法:
propulate(ResultSet rs,int startRow) :指定加载结果集,并且指定从第几行开始操作。
setPageSize(int pageSize) :指定一页有多上行记录。
previousPage() :翻到上一页。
nextPage() : 翻到下一页。
这些方法用起来很简单,具体就用法不给出代码。