RowSet继承了ResultSet接口,却无需始终保持与数据库的连接。
1.应用场景:
(1)可滚动结果集需要始终与数据库保持连接。即使不进行任何操作,也占用数据库连接,而数据库连接属于稀有资源。在这种情况下我们可以使用行集。
(2)RowSet还适用于将查询结果移动到复杂应用的其他层。因为ResultSet结果集数据结构庞大,且依赖于数据库连接。
2.RowSet实现了如下接口:
(1)CachedRowSet允许在断开连接的状态下执行相关操作。
(2)WebRowSet对象代表了一个被缓存的行集,该行集可以保存为XML文件。该文件可以移动到Web应用的其他层中,只要在该层中使用WebRowSet重新打开该文件即可。
(3)FilteredRowSet和JoinRowSet接口支持对行集的轻量级操作,它们等同于SQL中的SELECT和JOIN操作。上述两个接口的操作对象是存储在行集中的数据,因此运行时无需建立数据库连接。
(4)JdbcRowSet是ResultSet的一个瘦包装器。它从RowSet中继承了get方法和set方法,从而将一个结果集转换成一个"bean"。
以上接口的参考实现在com.sun.rowset包中,它们均以Impl结尾,比如CachedRowSetImpl
3.被缓存的行集
一个被缓存的行集包含了一个结果集中所有的数据。CachedRowSet是ResultSet接口的子接口。所以可以使用ResultSet中的API。
被缓存的行集的优点:断开数据库后连接仍然可以使用行集。
(1)使用一个结果集来填充CachedRowSet对象:
import javax.sql.rowset.CachedRowSet;
ResultSet result = stat.getResultSet();
CachedRowSet crs = new com.sun.rowset.CachedRowSetImpl();
crs.populate(result);
result.isAfterLast() //true 即populate会将ResultSet的光标移动到最后一行之后
conn.close();
(2)通过CachedRowSet对象自动创建数据库连接
crs.setUrl("jdbc:derby://localhost:1527/COREJAVA;create=true");
crs.setUsername("dbuser");
crs.setPassword("12345678");
//设置查询命令和所有参数
crs.setCommand("SELECT * FROM test_table where name=?");
crs.setString(1, "a");
//设置 CachedRowSet 对象的页大小
crs.setPageSize(20);
//将查询结果填充到行集
crs.execute();
//获取一下批数据
crs.nextPage();
注意:
MySQL提供的Driver不支持通过CachedRowSet创建数据库连接
(3)通过行集修改数据
以上方法可以使用与结果集相同的命令来查看和修改行集中的数据如果修改了行集中的内容,通过调用 crs.acceptChanges(conn) 或crs.acceptChanges() 将修改写回数据库中。第二种方法只有行集中设置了连接数据库所需的信息时才能调用。
注意:
1)因为并非所有的结果集都是可更新的,所以如果是复杂查询的结果,那么就无法将行集数据的修改写回到数据库中。当如果是来自同一张表,那么就可以安全的写回数据。
2)如果是使用结果来填充数据,那么行集就无从获知需要更新的数据的数据库表名,需要调用setTable方法来设置表名。
3)提交时行集会检查行集中的原始值与当前数据库的值是否一致,如果一致,按照修改后的结果覆盖数据库中的数据,否则抛出SyncProviderException异常,且不向数据库写回任何值。
分享到:
相关推荐
DataGridView控件用法合集(七) 33. DataGridView单元格样式设置 34. DataGridView文字表示位置的设定 35. DataGridView单元格内文字列换行 36. DataGridView单元格DBNull值表示的设定 37. DataGridView单元格...
连接X状态动作值数据集 数据说明: 文件connectx-state action-valuetxt存储了ConnextX公共状态的动作值函数。 文件格式是直观的,如果你熟悉的对流得分的四个在一排板。文本文件的每一行上有八个项。第一项是游戏...
七、杂项 快捷宏工具 保存快捷宏 载入快捷宏 设置窗口透明度 属性弹出菜单 同步滚动窗口 传统帮助按钮 XP风格帮助按钮 HTML风格帮助 八、拼写检查 拼写检查 拼写检查(英式英语) 拼写检查(美式英语)
该数据集包含22门课程、32593名学生,包含他们的评估结果以及他们与VLE互动的日志,这些日志由学生点击次数的每日摘要(10655280行数据)表示;课程介绍从2月和10月开始,分别代表“B”和“J”。数据集由使用唯一...
八皇后问题要求在一个8*8的棋盘上放上8个皇后,使得每一个皇后既攻击不到另外七个皇后,也不被另外七个皇后所攻击.按照国际象棋的规则,一个皇后可以攻击与之处在同一行或同一列或同一斜线上的其他任何棋子....
第七单元 指 针 42 第八单元 结构体和共用体 61 第九单元 文 件 78 附加题 82 模拟试卷一 102 模拟试卷二 108 模拟试卷三 114 第一单元 程序设计和C语言 一、 选择题 1. C语言的基本构成单位是: A 。 A. 函数 ...
(七)多工作簿与当前工作簿中的工作表之间的转换 如下是不改变各工作表的内容转换操作: 1、多个工作簿中的多表导入到一个工作簿中的多工作表:将同一文件夹下的各工作簿中所有的非空工作表合并到当前工作簿中,...
│ │ │ ├[思库教育]JS 第七集 数组初步 (2).avi │ │ │ ├[思库教育]JS 第三集 经过多少次这个路口.avi │ │ │ ├[思库教育]JS 第四集 九九乘法表.avi │ │ │ ├[思库教育]JS 第五集 js系统内置函数.avi │...
假设nor那个数据有5000条 剩下的七个每个取500个 和nor那个组成一个数据集 随机取 一共要生成三个数据集 按照我给的那个比例 三个数据集都需要做故障诊断 特征说明 只要这11个特征:tei teo tci tco tre trc kw ...
基于keras+Attention+Python+LSTM实现的古诗生成器源码+文档说明+数据集(6000) 使用keras进行建模 通过调整config的form和max_len选择生成五言绝句或七言绝句 两种模型可供训练: 不带Attention Layer的LSTM模型 ...
七、IPO审核 关联交易 同业竞争 IPO被否原因案例 A股IPO审核重点关注问题汇报材料 证监会发行监管部首次公开发行股票审核工作流程 IPO具体审核环节 IPO同业竞争、关联交易问题(汇总) 证监会IPO申请文件反馈意见 ...
ComponentOne Enterprise 是一款专注于企业应用 .NET开发的 Visual Studio 组件集,包含 300 多种 .NET控件,支持 WinForm,WPF,UWP,ASP.NET MVC 等七个 .NET开发平台,具备表格数据管理、数据可视化、报表和文档...
的一国人在了和是中大有不会民工这年主地们为个作上要我生到产行发他以来出日部业对十经社家学进动成全政新多同时第员方加义就于说分长本建开自三党用下法实力理月现展美农专表后高二合过能各利得重前事关也种公军好...
21:竖行友情链向上移动代码下载 22:跟随下拉框的广告代码演示下载 23:交叉分离式广告代码演示下载 24:幻灯10个图片轮换代码演示下载 25:分组相关的图片导航代码1下载 26: 分组相关的图片导航代码2下载 27:...
第七部分 游戏篇 207 商人过河游戏 208 吃数游戏 209 解救人质游戏 210 打字训练游戏 211 双人竞走游戏 212 迷宫探险游戏 213 迷你撞球游戏 214 模拟扫雷游戏 215 推...
第四章介绍了PyTorch中神经网络模块nn的基础用法,同时讲解了神经网络中“层”,“损失函数”,“优化器”等,最后带领读者用不到50行的代码搭建出曾夺得ImageNet冠军的ResNet。 第五章介绍了PyTorch中数据加载,GPU...
任务 4:构建数据集 任务 5:对报告进行布局 任务 6:对数据进行排序 任务 7:格式化报告 编辑列标题 格式化列标题 在同一行上显示名字和姓氏 增大行之间的间隔 任务 8:创建报告标题 接下来的...
任务 4:构建数据集 任务 5:对报告进行布局 任务 6:对数据进行排序 任务 7:格式化报告 编辑列标题 格式化列标题 在同一行上显示名字和姓氏 增大行之间的间隔 任务 8:创建报告标题 接下来的步骤 第二章、连接至...
第七步:把剩下含有类标号数据的total_data.arff文件复制一份,作为总的训练数据集 。文件名称为build_model.arff。 第八步:从total_data.arff文件中剩下的数据里面选取所有分类标号为male的49行数据 作为校验数据...