java基础类库学习 java.sql(5)RowSet类的学习

RowSet是可滚动。可更新。可序列化的结果集

RowSet接口继承了ResultSet接口,RowSet接口下包含JdbcRowSet,CachedRowSet,FilterRowSet,JoinRowSet,WebRowSet子接口,除了JdbcRowSet需要保持与数据库的连接之外,其余4个子接口都是离线的RowSet(即无需保持数据库连接,创建离线的RowSet时已经将底层数据读取到了内存中)

注意此时的RowSet只是接口,并没有实现类

在java7之后,提供了RowSetProvider实现类和RowSetFactory接口

如何使用?

1创建JdbcRowSet

Class.forName(driver);

RowSetFactory factory=RowSetProvider.newFactory();

JdbcRowSet js=factory.createJdbxRowSet();

js.setUrl();

js.setUsername();

js.setPassword();

js.setCommand();

js.execute();

2离线的RowSet CachedRowSet,FilterRowSet,JoinRowSet,WebRowSet

离线的RowSet'会直接将底层数据读入内存中,封装成RowSet对象,javabean

Class.forName(driver);

Connection conn=DriverManager.getConnection(url,user,pass);

Statement st=conn.createStatement();

ResultSet rs=st.executeQuery(sql);

RowSetFactory factory=RowSetProvider.newFactory();

CachedRowSet cs=factory.createCachedRowSet();

cs.populate(rs);//使用ResultSet装填RowSet

rs.close();

st.close();

conn.close();

离线RowSet的查询分页

由于CachedRowSet会将数据记录直接装载到内存中,因此如果sql查询的记录过大,CachedRowSet将会占用大量的内存,

因此CachedRowSet提供了分页:一次装载ResultSet中的几条记录

populate(ResultSet rs,int startRow);

setPageSIze(int pageSize);//设置CachedRowSet每次返回多少条记录

previousPage();读取上一页的记录

nextPage();//读取下一页的记录

分页代码实现?

Class.forName(driver);

Connection conn=DriverManager.getConnection(url,user,pass);

Statement st=conn.createStatement();

ResultSet rs=st.executeQuery(sql);

RowSetFactory factory=RowSetProvider.newFactory();

CachedRowSet cs=factory.createCachedRowSet();

cs.setPageSize(pageSize);//设置每页显示pageSize条记录

cs.populate(rs,(page-1)*pageSize+1);//使用ResultSet装载RowSet,设置从第几条记录开始

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值