<!--StartFragment-->
S60平台:使用DBMS APIs —使用行集和游标(1)
3、使用行集和游标
在Symbian系统的DBMS中,使用行集可以对数据库中的数据进行查找,恢复与修改操作。
关于行集有一点需要牢记,即列集所包括的并不是数据本身,其容纳的非永存性元素只是对数据库中真实数据行的索引进行解析。
3.1 行集定义
列集的API包含三个主要概念:
·行集基类(RDbRowSet)——一个抽象类可以提供导航,行恢复以及数据的更新。数据源由两个具体的操作定义。
·表行集(RDbTable)——提供表的完全视图。
·SQL 视图(RDbView)——提供表的一个视图。该视图依赖于建立视图的SQL查询。其可能包含数据的一部分和表的一部份列。
3.1.1 行集基类
下列功能由Symbian 系统下,DBMS的行集操作提供:
·行寻找与匹配
·从数据库中回复数据
·更新或插入行
·使用游标对行集进行导航
·使用行集获得行记录的架构
·在行中解析与设定列
通过使用RDbRowSet,一个基类可以对所有的行集类型进行定义。行集的具体类型要从类中获取。
为了获取数据,数据库应用程序使用一个行集于当前行记录在的集合中维持一个游标。行集提供一个抽象借口和两个具体类型:表行集与SQL视图。
3.1.2 表行集
表行集将表的所有行和所有列视作一个行集。在行集中可以使用索引,从而从表中迅速获得主键基准的列。若没有使用索引,检索出的行将是无序的。表行集被封装在RDBTab类中
。
当必须查看全表结构或需要以某种顺序查看表中数据时,表行集时非常有用的。如果想查找一个独立且唯一的行,表行集优于SQL的视图。(参见3.3节,“使用索引获取数据”,
可以了解到使用索引如何达到以上所说的效果)然而,在达到多数情况,SQL更优。
3.1.3 SQL视图
使用RDbView类可以对行集进行SQL查询。任何SQL查询都封装在TdbQuery中。一个SQL视图是一个行集,其由数据库上的SQL查询语句实现且由一个单独的表对其约束。RDbView类的
Prepare方法可解析SQL并且可确定如何获取数据的值。在缺省状态下,必须通过评估视图的值实现游标导航。
由于评价过程是很耗费时间的,一个预估值窗TDbWindow可能在预备阶段使用,其能令行集进行依次评估并进行快速导航。完全的评估可能需要很长时间,最好是对数据库进行分步
评估。
对于巨型行集,TDbWindow可以在平衡内存耗费(若视图存储完全的行集耗费将是巨大的)与速度(若行集被每个游标导航,速度将最慢)。行集可通过定义一个有限(或部分)的
,大小适中的预评估窗来获取这种平衡。一个部分估值窗同样可用于获得本地导航SQL 结果集的部分视图。
下列代码组织了一个使用SQL查找语句的视图:
...
private: // 数据成员
RDbStoreDatabase iBookDb;
...
_LIT(KViewSql,"SELECT Author, Title FROM Books" );
RDbView view;
User::LeaveIfError(view.Prepare(iBookDb, TDbQuery(KViewSql), view.EReadOnly));
CleanupClosePushL(view);
User::LeaveIfError(view.EvaluateAll());
for (view.FirstL(); view.AtRow(); view.NextL())
{
view.GetL(); // 获取当前行的副本
... // 对行进行操作
}
CleanupStack::PopAndDestroy(); // 这样同样可关闭视图
<!--EndFragment-->
分享到:
相关推荐
在IT领域,数据库管理系统(DBMS)的应用程序接口(APIs)是开发人员与数据库进行交互的重要工具。DBMS API允许程序员执行各种数据库操作,如...理解和熟练使用DBMS APIs对于构建高效、可靠的数据库驱动应用至关重要。
### 关于游标的说明与使用方法 #### 一、什么是游标? 在数据库技术中,**游标**是一种用于检索查询结果集中的数据的方式。它允许用户逐行处理记录集,而不是...希望本文能够帮助您更好地理解和掌握游标的使用技巧。
在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...
全局游标由DBMS系统管理,可跨多个PL/SQL块使用。 2. **游标的声明与打开** - 声明游标:使用DECLARE关键字声明一个游标,指定对应的SQL查询语句。 - 打开游标:使用OPEN关键字打开游标,执行SQL查询并准备读取...
Oracle 游标使用方法及语法大全 Oracle 游标是 PL/SQL 程序中...Oracle 游标是一种强大的工具,用于处理查询结果集,可以用于查询、更新和删除数据行。但是,需要注意游标的使用方法和语法,以免出现错误或锁定问题。
根据提供的标题、描述以及部分代码内容,我们可以详细探讨Oracle游标的使用方法,特别是明确游标(Explicit Cursor)和隐式游标(Implicit Cursor)的区别及其具体应用方式。 ### Oracle游标简介 在Oracle数据库中...
- **输出结果**:使用 `dbms_output.put_line` 函数输出每组中的男生和女生人数。 #### 6. 总结 本示例展示了如何使用Oracle PL/SQL中的游标来进行数据的分组统计,并通过程序逻辑实现了一种类似“行转列”的效果。...
- **打开游标**:使用`OPEN cursor_name`语句来打开游标,从而执行查询并准备结果集供进一步处理。 ##### 2. 游标的读取 - 使用`FETCH cursor_name INTO variable_list`来从打开的游标中读取一行数据到变量列表中。...
3. 使用RowSets和游标 RowSet是数据检索的基本单元,可以是基于表或SQL视图的。游标用于遍历RowSet,有不同的状态,如打开、移动和关闭。 4. 使用SQL与DBMS Symbian OS支持SQL调用,包括事务和回滚机制。TDbQuery类...
然后,使用 FETCH 语句从游标中提取每一行记录,并使用 dbms_output.put_line 语句将结果打印出来。 游标的应用非常广泛,如在数据处理、报表生成、数据分析等领域都有广泛的应用。尤其是在需要处理大量数据时,...
1. **使用FOR循环遍历游标**: ```sql FOR cur_result IN cur_name LOOP -- 处理每行数据 END LOOP; ``` 例如: ```sql DECLARE CURSOR cur_employee IS SELECT emp_id, emp_name FROM employees; emp_...
- 显式游标:显式游标允许我们更精细地控制查询结果,包括遍历结果集、读取当前行数据、移动到下一行等。显式游标需要在DECLARE部分声明,并通过OPEN, FETCH和CLOSE语句来操作。 2. **SELECT INTO 语句** - 在PL/...
使用数据库管理系统(DBMS)处理数据集使用数据库管理系统(DBMS)处理数据集使用数据库管理系统(DBMS)处理数据集使用数据库管理系统(DBMS)处理数据集使用数据库管理系统(DBMS)处理数据集使用数据库管理系统...
然后,我们在循环中使用`FETCH`语句获取游标中的每一行数据,并通过`RANK()`函数计算每行的排名。最后,关闭游标以释放资源。 接下来,我们讨论过程(Procedure)。过程是PL/SQL中的一个可重用代码块,它可以包含一...
### Oracle游标使用详解 #### 一、Oracle游标简介 在Oracle数据库中,游标是一种用于处理查询结果集的强大工具。它允许用户通过逐行访问数据来执行复杂的操作,如更新、删除或插入记录等。游标可以分为显式游标和...
查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和触发器操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。显式游标对应...