一 基本概念
CachedRowSet是最常用的一种RowSet,继承自ResultSet,它提供了对数据库的离线操作,可以将数据读取到内存中进行增删改查,再同步到数据源。可串行化,可作为JavaBeans在网络间传输。
二 基本使用
1、获取CachedRowSet
//JDK7以上支持
RowSetFactory rowSetFactory = RowSetProvider.newFactory();
CachedRowSet crs = rowSetFactory.createCachedRowSet();
2、填充CacheRowSet
1)execute()
crs根据设置的url、username、password 三个参数去创建一个数据库连接,
然后执行查询命令sql ,用结果集填充crs。
crs.setUrl(url);
crs.setUsername("username");
crs.setPassword("password");
crs.setCommand(sql);
crs.execute();
execute()还可以直接接受一个已经打开的数据库连接,假设conn为一个已经打
开的数据库连接,下段示例代码与上段代码结果一致:
crs.execute(conn);
crs.setCommand(sql);
crs.execute();
2)populate(ResultSet)
ResultSet rs = stmt.executeQuery(sql);
crs.populate(rs);
3、新增
crs.moveToInsertRow();
crs.updateString("Name", "Shakespeare");
crs.updateInt("ID", 10098347);
crs.updateShort("Age", 58);
crs.updateInt("Sal", 150000);
crs.insertRow();
crs.moveToCurrentRow();
crs.acceptChanges();
4、删除
把游标移到要删除的行,调用 deleteRow() ,再同步回数据库即可。
crs.last();
crs.deleteRow();
crs.acceptChanges();
5、更新
把游标移到要更新的行,根据每列的类型调用对应的更新方法,再同步到数据库中
crs.first();
crs.updateString(1, "Hello");
crs.updateInt(2,10098347);
crs.updateRow();
crs.acceptChanges();
6、查询
以列号为参数获取每行中的列值
while (crs.next()) {
String name = crs.getString(1);
int id = crs.getInt(2);
Clob comment = crs.getClob(3);
short dept = crs.getShort(4);
System.out.println(name+" "+id+" "+comment+" "+ dept);
}
以列名为参数获取每行中的列值
while (crs.next()) {
String name = crs.getString("NAME");
int id = crs.getInt("ID");
Clob comment = crs.getClob("COM");
short dept = crs.getShort("DEPT");
System.out.println(name+" "+id+" "+comment+" "+ dept);
}