第二章 开始
A journey of a thousand miles starts with a single step.
Lao-tzu
(千里之行,始于足下。老子)
Symbian SQL很容易学习并很轻松上手使用。本章的目的是在开始之前做好一切准备。本章的第一部分提供了在哪里并如何获得Symbian SQL的细节。接下来在一个控制台程序中演示了基本的数据库操作。在最后,列出了附加的文档。
2.1 在哪里获得Symbian SQL?
从Symbian OS V9.3开始,Symbian SQL已经包含在其SDK中了。从硬件来看(S60平台),Symbian SQL包含于S60第三版FP2以后的版本中了。S60第三版FP1的用户不用着急,可以从developer.symbian.org网站下载一个Symbian SQL的SIS安装包。其他的版本在以后将会提供支持。详情请查看本书的wiki网站
developer.symbian.org/wiki/index.php/Inside_Symbian_SQL。
2.2 Symbian SQL API概述
Symbian SQL由两个主要的类组成,并和其他类在一起,流入二进制大对象(binary large objects (BLOBs),也可以叫做元数据)中,绑定列,定义安全策略并提供很多使用函数。
两个最后重要的类如下:
(1) RSqlDatabase 使一个客户端能够创建、打开和附加到一个数据库并能够执行不需要返回值的操作(如,INSERT)。
(2) RSqlStatement 客户端进行有返回值的查询操作(如,SELECT)。
其他类如下:
(1) RSqlSecurityPolicy 为一个共享安全数据库定义一个安全策略。
(2) TSqlScalarFullSelectQuery 执行一个查询,返回一个由一行一列的数据。
(3) RSqlColumnReadStream 用来读取包含二进制和/或文本数据的列的内容。
(4) RSqlParamWriteStream 用来给参数设置二进制或文本数据。
(5) RSqlBlobReadStream 提供一个更有内存效率的方法来读取二进制或文本数据列。
(6) RSqlBlobWriteStream提供一个更有内存效率的方法来设置二进制或文本数据列。
(7) TSqlBlob 一次调用来读取或写入整个二进制或文本列的内容。
在第六章会更加详细的讨论这些类。BLOB类在Symbian^3以后可用。
2.3 第一个数据库例子
为了更好的介绍Symbian SQL,我们写了一个音乐库的例子。这个例子是一个简单的、基于控制台的程序,图文并茂的演示了数据库操作。选择用控制台来演示是为了降低编写GUI程序的复杂度。Symbian SQL API能够在控制台程序和GUI应用程序中良好的工作,所以这个例子就会很容易的移植到你的GUI程序当中。这个例子的源码可以在本书的wiki网站中找到。
developer.symbian.org/wiki/index.php/Inside_Symbian_SQL.
这个程序使用多种Symbian SQL操作保存歌曲到数据库,修改和查询存入的内容。我们按照下面的顺序来做这些操作:
1.创建一个空的音乐数据库。
2.在这个数据库中创建一个歌曲表。
3.创建一个索引。
4.在表中插入歌曲的数目。
5.选择所有歌曲条目并显示在控制台上。
6.在表中更新歌曲的条目。
7.用列绑定更新歌曲条目。
8.从表中删除歌曲条目。
9.关闭数据库文件的连接。
2.3.1 项目安装
为了使用Symbian SQL,你的源文件需要包含sqldb.h头文件。Symbian SQL库,sqldb.lib,要包含在你的项目MMP文件中。
2.3.2 创建一个数据库
第一个任务是打开一个数据库文件的连接,用两种方法可以做到。
(1) 创建一个空数据库文件
(2) 打开这个空数据库文件
在这个例子中,我们从创建一个空的数据库文件开始。这个可以用RSqlDatabase::Create()方法来完成,创建的数据库文件在指定的路径。随后就会建立客户端和Symbian SQL 服务端的连接。
RSqlDatabase database; CleanupClosePushL(database); _LIT(KDbName, "C://MusicDb.db"); TInt error = database.Create(KDbName); //Handle any errors and ignore KErrAlreadyExists
Create的文件名要是一个全路径的数据库文件名,最多256个字符。
这个函数用来创建一个共享安全的数据库。共享安全数据库允许不同的应用程序安全的访问它。访问的这些数据库被假定为是基于Symbian平台安全模型定义的数据库。在第六章会详细讨论共享安全数据库。
RSqlDatabase::Open() 函数用来打开已经存在的数据库文件。这个函数通过完整的文件路径来打开安全的或不安全的数据库。