S60平台:使用DBMS APIs —DBMS的管理结构和元素(2)

来源:百度文库 编辑:神马文学网 时间:2024/03/29 16:00:42
S60平台:使用DBMS APIs —DBMS的管理结构和元素(2) 
 2.3 在数据库中定义表
为了在数据库中定义表,开发者需要注意以下三个关键的API概念:列,列集和索引键。
在DBMS中,表名必须唯一;对于表所包含的列,列名必须唯一。表名和列名的确定则无具体限制。2.3.1 列
数据库中的表由列的集合定义。每一列都有属性,例如:名字,数据类型。如果数据是文本或二进制类型的话,还需要确定最大长度。2.3.2 列集
用来描述表的列集合压缩存储在CDBColSet中。TDbColSetter()被用于遍历集合。下列代码段向我们展示了,在2.1节中创建的永久文件存储站——“永久文件存储站和流”中,如何创建一个数据库表的过程。
...
const int KTitleMaxLength = 60;
_LIT(KBooksTable, "Books");
_LIT(KBooksAuthorCol, "Author");
_LIT(KBooksTitleCol, "Title");
_LIT(KBooksDescriptionCol, "Description");
... // Books 表列详细清单
TDbCol authorCol(KBooksAuthorCol, EDbColText); // 缺省长度
TDbCol titleCol(KBooksTitleCol, EDbColText, KTitleMaxLength);
titleCol.iAttributes = TDbCol::ENotNull; //列属性为非空// 流数据
TDbCol descriptionCol(KBooksDescriptionCol, EDbColLongText);
// 创建列集
CDbColSet* bookColSet = CDbColSet::NewLC(); //构建一个空的列集合
bookColSet->AddL(authorCol); //将创建好的列加入列集合中
bookColSet->AddL(titleCol);
bookColSet->AddL(descriptionCol);
// 创建Books表
User::LeaveIfError(iBookDb.CreateTable(KBooksTable,*bookColSet));
CleanupStack::PopAndDestroy(bookColSet);
...
首先,代码段中使用_LIT宏定义了列名。随后,详细定义了列属性,bookColSet对象被初始化,列随即被添加到集合中。关于文本域的设定,代码段中提供了一个缺省长度样例和一个自定义最大长度的样例。缺省的文本域长度为50。
对titleCol列,成员变量iAttributes赋值为ENotNull,表示当titleCol列属性为空时,无法创建行。
最后,因为bookColSet在创建的时候被添加进清除栈,当程序段结束前,其必须被从栈移除;对清除栈的该项操作通过调用PopAndDestroy(bookColSet)来完成。
2.3.3 索引键值
索引键用来确定一个或多个表列的次序。每个键都有一些属性,例如唯一性或主键属性,一个对文本列的比较说明和一个关于列的列表,这些属性构成了键。如果没有主键被定义,行将按任意顺序被检索。
主键被封装在CDbKey中,列键值被封装在TDbKeyCol中。
下列代码段展示了如何在2.3.2节创建的表——“Column Sets”中创建一个双列索引:
...
_LIT(KBooksTable, "Books");
_LIT(KBooksAuthorCol, "Author");
_LIT(KBooksTitleCol, "Title");
_LIT(KBooksIndexName,"BooksIndex");
... // 创建一个包含两个列的索引
TDbKeyCol authorCol(KBooksAuthorCol);
TDbKeyCol titleCol(KBooksTitleCol);
CDbKey* index = CDbKey::NewLC(); // 创建一个索引键集
index->AddL(titleCol);
index->AddL(authorCol);
User::LeaveIfError(iBookDb.CreateIndex(
KBooksIndexName, KBooksTable, *index));
CleanupStack::PopAndDestroy(index); 首先,列索引被定义,随后CDbKey索引进行初始化,列被添加到该索引中。通过调用CreateIndex,我们可以创建一个数据库索引。
最后,由于在创建索引时,其被加入清除栈,程序结束前,我们需要调用PopAndDestroy(index)来将索引移出清除栈。
 
 
S60平台:使用DBMS APIs —DBMS的管理结构和元素(2) S60平台:使用DBMS APIs —DBMS的管理结构和元素(2) S60平台:使用DBMS APIs —DBMS的管理结构和元素(1) S60平台:使用DBMS APIs —DBMS的管理结构和元素(3) S60平台:使用DBMS APIs —DBMS的管理结构和元素(1) S60平台:使用DBMS APIs —DBMS的管理结构和元素(3) S60平台:使用DBMS APIs —总论 身份和访问管理:平台和基础结构 第 2 章:选择平台的各种方法 DBMS - April 1997 - Server Side DBMS - April 1997 - Server Side PuTTY手机端-S60平台实现SSH接入管理的手机客户端 身份和访问管理:平台和基础结构 第 4 章:设计基础结构 身份和访问管理:平台和基础结构 第 5 章:实施基础结构 身份和访问管理:平台和基础结构 第 6 章:运行基础结构 平台和基础结构 第 1 章:《平台和基础结构》的简介 身份和访问管理:平台和基础结构 第 3 章:问题和要求 使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(一) 使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(二) 使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(三) 使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(四) 使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(五) 使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(六) 使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(三) 使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(四)