S60平台:使用DBMS APIs —使用行集和游标(2)
3.2 游标
一个游标可以对行集中的所有有效行进行导航。有效行依赖于行集是如何生成的,特别是行集是否是使用评估窗的SQL视图
3.2.1 游标状态
在大多数普通情况下,游标保存来自行集的,从属于行的值。然而,游标还需要保存其他一些状态。
一个游标可以保存“起始”或“结束”状态。起初,游标进行重置,游标定位于开始端。其初始位置指向第一行的前一行,结束位置指向最后一行的下一行。对于一个空集来说,
其仍有指向数据集尾的游标,在这种情况下,从起始位置对第一行进行导航和对最后一行进行导航是等价的,游标在起始状态时定位。在对集合的最后一行进行导航时,执行过程
是相似的。
当对一行进行更新或插入操作时,游标有一个状态阻止导航,直到更新或插入操作完成。
删除当前行后,游标不发生变化并保存由于删除操作所而生成的无效值。当导航至下一行,前一行或特殊行时,游标将移动至指定行或者在还有行的情况下,指向起始或结束位置
,删除行集值时,行集中的值将被从行集中移除。
3.3 通过索引获得数据
可以通过使用SQL视图或RDbTable行集对象,生成一个索引来获取数据。
RdbTable类提供了一个简单的SeeKL方法来快速查找行。其使用TDbSeekKey来获取当前存在的第一行值。当使用已知唯一索引键快速获得一行值时,SeeKL方法非常有效。若需要更
多复杂的查找操作,SQL视图与RdbRowSet基类可以提供丰富的解决办法。
下列代码使用RDbTable和一个索引项来查找行的首次匹配。索引在2.3.3节定义,“索引键。”
...
_LIT(KBooksTable, "Books");
_LIT(KBooksIndexName,"BooksIndex");
...
private: // 数据成员
RDbStoreDatabase iBookDb;
...
void CBookDb::GetABookFastL(const TDesC& aTitle, TDes& aResult)
{
RDbTable rowset;
RDbTable table;
TDbSeekKey seekKey(aTitle); // 初始化单列查询值
// Open the 'Books’ table. Specify what index is used.
// 打开Books表,实例化使用的索引
User::LeaveIfError(
table.Open(iBookDb, KBooksTable, rowset.EReadOnly));
CleanupClosePushL(table); // 记得弹出与关闭表
User::LeaveIfError(table.SetIndex(KBooksIndexName));
if( rowset.SeekL(seekKey) ) // SeeKL需要的键是一个集合
{
// 游标被设定用于查找列,关于游标的相关操作。
rowset.GetL();
...
}
else
{
// 找不到值
}
...
// 将表从清洁栈中弹出,将清洁栈关闭
CleanupStack::PopAndDestroy();
索引数据类型必须匹配目标类型,即Tint匹配ColIntnn,等等。一个TdbSeekKey对象使用需求匹配值(aTitle)索引来创建。举个例子,有一个已知索引,但其在查询表时,必须以
下列格式使用才行:
CDbNames* idxs = iBookDb.IndexNamesL(KBooksTable);
在试图查找表前,为表设定索引是非常重要的。最终,SeekL()尝试去匹配值。如果键值被匹配,那么游标则被设定到指定位置。一个后续方法GetL()将获得数据以备进一步操作。
<!--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中的游标来进行数据的分组统计,并通过程序逻辑实现了一种类似“行转列”的效果。...
3. 使用RowSets和游标 RowSet是数据检索的基本单元,可以是基于表或SQL视图的。游标用于遍历RowSet,有不同的状态,如打开、移动和关闭。 4. 使用SQL与DBMS Symbian OS支持SQL调用,包括事务和回滚机制。TDbQuery类...
- **打开游标**:使用`OPEN cursor_name`语句来打开游标,从而执行查询并准备结果集供进一步处理。 ##### 2. 游标的读取 - 使用`FETCH cursor_name INTO variable_list`来从打开的游标中读取一行数据到变量列表中。...
然后,使用 FETCH 语句从游标中提取每一行记录,并使用 dbms_output.put_line 语句将结果打印出来。 游标的应用非常广泛,如在数据处理、报表生成、数据分析等领域都有广泛的应用。尤其是在需要处理大量数据时,...
2. **使用FETCH INTO语句遍历游标**: 使用`FETCH INTO`语句逐行获取游标中的数据,并存储到变量中。 ```sql LOOP FETCH cur_name INTO v_col1, v_col2, ...; EXIT WHEN cur_name%NOTFOUND; -- 处理数据...
- 显式游标:显式游标允许我们更精细地控制查询结果,包括遍历结果集、读取当前行数据、移动到下一行等。显式游标需要在DECLARE部分声明,并通过OPEN, FETCH和CLOSE语句来操作。 2. **SELECT INTO 语句** - 在PL/...
使用数据库管理系统(DBMS)处理数据集使用数据库管理系统(DBMS)处理数据集使用数据库管理系统(DBMS)处理数据集使用数据库管理系统(DBMS)处理数据集使用数据库管理系统(DBMS)处理数据集使用数据库管理系统...
然后,我们在循环中使用`FETCH`语句获取游标中的每一行数据,并通过`RANK()`函数计算每行的排名。最后,关闭游标以释放资源。 接下来,我们讨论过程(Procedure)。过程是PL/SQL中的一个可重用代码块,它可以包含一...
查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和触发器操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。显式游标对应...
2. **显式游标**:当你需要控制查询结果的处理方式,或者处理多行数据时,需要使用显式游标。显式游标需要在DECLARE部分声明,并通过OPEN、FETCH、CLOSE等语句来管理和使用。以下是一个基本的显式游标示例: ```...