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异常,且不向数据库写回任何值。
分享到:
相关推荐
ASP.NET 编程知识点总结 ...这些知识点涵盖了 ASP.NET 编程的多个方面,包括程序集加载、GridView 合并行、rdlc 合并行、课程表显示、程序集合并、调用 C# 类中的方法、SQL Server 中调用 .NET 程序集中的方法等。
DataGridView控件用法合集(七) 33. DataGridView单元格样式设置 34. DataGridView文字表示位置的设定 35. DataGridView单元格内文字列换行 36. DataGridView单元格DBNull值表示的设定 37. DataGridView单元格...
#### 七、总结 通过合理设置 MySQL 的字符集,可以有效避免因字符集不匹配导致的乱码问题。具体而言,需要注意客户端和服务端之间的字符集设置、创建表时的字符集选择以及数据插入和查询时的字符集处理等几个方面。...
《国际先进机器人技术(IARP)第十七次联合协调讨论会报告译文集》是一部集大成之作,它详尽地记录了全球机器人领域的最新研究成果和技术动态。在当今科技飞速发展的时代,机器人技术不再仅仅是科幻小说中的概念,...
"lab7/mldata"路径可能表示这是课程第七次实验或练习的数据部分,专注于机器学习模型的训练和评估。 标签"Minst"和"sklearn"揭示了两个关键信息。首先,"Minst"是"Modified National Institute of Standards and ...
在常规工作中,他着重抓学生的日常行为规范,如“生活雅行、学习雅行、交往雅行”,通过创建雅行星级班级,提升校园环境和纪律。此外,他还组织了多项大型活动,如学业水平测试、技术培训、高考、中考等,确保了这些...
本篇内容基于"SAS讲义 第七课建立SAS系统的数据集FSPFSEDIT.doc",详细介绍如何使用SAS/FSP软件中的`FSEDIT`过程来创建和编辑SAS数据集。相比于直观易用的SAS/ASSIST图形界面工具,`FSEDIT`提供了更多定制化的数据...
- **信贷准入管理**:对于“两高一剩”(高污染、高耗能、产能过剩)行业,需要严格控制信贷准入,不得未经有权审批行进行客户准入就直接审批贷款。 #### 五、信贷审批与授权管理 - **审批体制**:农行实行以审贷...
2. 插入记录:使用`DataRow`和`NewRow()`方法创建新行,然后添加到`DataTable`。 ```csharp DataRow newRow = dataTable.NewRow(); newRow["ColumnName"] = "Value"; dataTable.Rows.Add(newRow); ``` 3. 更新和删除...
#### 七、查找命令 - **正向查找**:使用`/text`来查找文本,按`n`键查找下一个匹配项,按`N`键查找前一个匹配项。 - **反向查找**:使用`?text`来查找文本,按`n`键查找下一个匹配项,按`N`键查找前一个匹配项。 - ...
**记录集对象**主要用于存储从数据库中检索出来的数据行。通过它,开发者能够轻松地对数据进行查询、浏览、修改等操作。为了实现这些功能,记录集对象提供了一系列重要的参数、方法和属性。 #### 三、Cursortype ...
【七至九年级古诗词全集】包含了七年级到九年级学生需要掌握的古诗词,这些诗词不仅是文学的瑰宝,也是中华文化的精髓。古诗词的学习对于学生来说,不仅可以提升文学素养,还能培养审美情趣,增强对中国传统文化的...
#### 七、6502指令集简介 6502是一种8位微处理器,广泛应用于早期的个人电脑和游戏机中。它的指令集相对简单,易于理解和编程。6502指令集主要包括了算术运算、逻辑运算、数据传输以及控制转移等基本功能。每个指令...
##### 4.4 同一行组合多个AT命令 可以在同一行内组合多个AT命令,中间用分号分隔: ``` AT+CMGF=1;AT+CSCS="GSM" ``` ##### 4.5 在多行输入AT命令 当需要连续输入多个AT命令时,可以在每条命令之间按回车键分隔:...
- `mysqli_fetch_assoc()`: 获取查询结果的一行作为关联数组。 - `mysqli_close()`: 关闭数据库连接。 7. **HTTP请求与响应** - `header()`: 发送原始HTTP头。 - `$_GET / $_POST`: 用于接收HTTP请求参数。 - ...
【经理述职报告范文合集七篇.docx】的文件主要涉及的是一个经理级别的管理人员对其一年工作的总结和汇报,以下是对报告中的关键知识点的详细解读: 1. **角色定位与责任担当**: - 经理作为公司的重要角色,需要...
本教程系列的第七集将重点放在如何在Eclipse和MyEclipse集成开发环境中配置这两个框架。 首先,Struts是Apache软件基金会的一个开源项目,它是一个用于构建MVC(Model-View-Controller)架构的Java Web应用框架。...
对于每个对象,注释文件中的每一行通常包含五个值:类别标签、中心点的x坐标、中心点的y坐标、宽度和高度。所有值都是相对于图像尺寸的比例值。 **2.3 数据集划分** - 将数据集分为训练集、验证集和测试集。一般...
知识点七:钢笔行书字帖的资源 钢笔行书字帖的资源有很多,例如书法作品、教学视频、在线课程等。学习钢笔行书字帖需要选择适合的资源,提高学习效率和效果。 "田英章钢笔行书字帖常用字3500个.doc"是学习钢笔行书...