symbian 数据库运用小例

简介: 一、主要的类:RDbStoreDatabaseRDbNamedDatabaseTDbColRDbView.
一、主要的类:
RDbStoreDatabase
RDbNamedDatabase
TDbCol
RDbView
.......

二、创建数据库:
RDbStoreDatabase:不共享,客户端专有
RDbNamedDatabase:共享,客户端专有与客户/服务器访问

//-------------
RDbStoreDatabase:
class CBookDb : public CBase
{
...
private: // Member data
RFs iFsSession;
RDbStoreDatabase iBookDb;
CFileStore* iFileStore;
...
};
TInt CBookDb::CreateDb(const TFileName& aNewBookFile)
{
Close();
// Create empty database file.
TRAPD(error,
iFileStore = CPermanentFileStore::ReplaceL(iFsSession,
aNewBookFile, EFileRead|EFileWrite);
iFileStore->SetTypeL(iFileStore->Layout());// Set file store type
TStreamId id = iBookDb.CreateL(iFileStore);// Create stream object
iFileStore->SetRootL(id);// Keep database ID as root of store
iFileStore->CommitL();// Complete creation by committing
// Create Book tables and indexes
CreateBooksTableL();
CreateBooksIndexL();
);

//-----------------
_LIT(KDbName,"C://Private//<SID>//DBMS.dat");
_LIT(KDbName,"C://Data//<Some_path_element>//DBMS.dat");
const int KTitleMaxLength = 60;
_LIT(KBooksTable, "Books");
_LIT(KBooksAuthorCol, "Author");
_LIT(KBooksTitleCol, "Title");
_LIT(KBooksDescriptionCol, "Description");
RFs iFsSession;
RDbNamedDatabase iBookDb;
...
TInt CBookDb::CreateDb(const TFileName& aNewBookFile)
{
Close();
TInt error=iBookDb.Replace(iFsSession, aNewBookFile);
if(error!=KErrNone)
{
return error;
}

// Specify columns for Books table
TDbCol authorCol(KBooksAuthorCol, EDbColText); // Default length
TDbCol titleCol(KBooksTitleCol, EDbColText, KTitleMaxLength);
titleCol.iAttributes = TDbCol::ENotNull;
// Stream Data
TDbCol descriptionCol(KBooksDescriptionCol, EDbColLongText);
// Create columnset
CDbColSet* bookColSet = CDbColSet::NewLC();
bookColSet->AddL(authorCol);
bookColSet->AddL(titleCol);
bookColSet->AddL(descriptionCol);
// Create the Books table
User::LeaveIfError(iBookDb.CreateTable(KBooksTable,
*bookColSet));
CleanupStack::PopAndDestroy(bookColSet);


三、打开数据库:
iItemsDatabase.Close();
User::LeaveIfError(iItemsDatabase.Open(iFsSession,DBFileName));

四、读数据
_LIT(KViewSql,"SELECT * FROM Books"
RDbView view;
iBookDb.Begin();

User::LeaveIfError(view.Prepare(iBookDb, TDbQuery(KViewSql),view.EReadOnly));
CleanupClosePushL(view);
User::LeaveIfError(view.EvaluateAll());

for (view.FirstL(); view.AtRow(); view.NextL())
{
view.GetL(); // Fetch a cached copy of current row
... // perform operations for the row
view.ColInt(1);
view.ColDes(2);
view.ColTime(3);
}

CleanupStack::PopAndDestroy(); // This also closes the view

五、删除数据
for (view.FirstL(); view.AtRow(); view.NextL())
{
view.DeleteL();
}

iBookDB.Commit();
iBookDB.Compact();

六、更新数据
for (view.FirstL(); view.AtRow(); view.NextL())
{
view.UpdateL();
view.SetColL(2,aName);
view.SetColL(3,aTime);
......
view.PutL();
}
目录
相关文章
|
3月前
|
SQL Oracle Java
怎样写出可在各种数据库间移植的SQL
国际标准没有对这些函数做规定,这种 SQL 语句就会和数据库相关而无法移植了,而这些函数在应用开发中还特别常见。 Hibernate 能将包括这些函数的标准 HQL 语句转换成不同数据库的 SQL,但 HQL 支持的函数太少,碰到不认识的函数还是要分别注册,这就丧失了可移植性;而且 HQL 能生成的 SQL 本身也比较简单,覆盖面太窄了。
|
11月前
|
数据库连接 定位技术 数据库
【C++项目实现】推箱子(含数据库实现)
【C++项目实现】推箱子(含数据库实现)
70 0
|
11月前
|
SQL 数据可视化 数据库
<数据库视图>--数据库的“眼镜”(世界杯例题篇),查阅必备
<数据库视图>--数据库的“眼镜”(世界杯例题篇),查阅必备
89 0
|
网络协议 安全 关系型数据库
Unity面试题——服务器数据库等杂项
Unity面试题——服务器数据库等杂项
111 0
|
SQL Shell Linux
adb命令详解(二)——手机缺失sqlite3时操作数据库的多种解决方案
adb命令详解(二)——手机缺失sqlite3时操作数据库的多种解决方案
285 0
adb命令详解(二)——手机缺失sqlite3时操作数据库的多种解决方案
|
存储 SQL JSON
开源SPL消灭数以万计的数据库中间表
中间表是数据库中专门存放中间计算结果的数据表,往往是为了前端查询统计更快或更方便而在数据库中建立的汇总表,由于是由原始数据加工而成的中间结果,因此被称为中间表。在某些大型机构中,多年积累出来中间表的数量居然高达数万张,给系统和使用造成了很多麻烦。
372 0
开源SPL消灭数以万计的数据库中间表
|
数据库
LeetCode(数据库)- Hopper 公司查询 I
LeetCode(数据库)- Hopper 公司查询 I
88 0
|
SQL Oracle 关系型数据库
oracle数据库命令总结——后篇
oracle数据库命令总结——后篇