`
isiqi
  • 浏览: 16482521 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Symbian数据库浅谈

阅读更多

主要涉及到的类:
RDbs
RDbStoreDatabase
RDbNamedDatabase
RDbTable
RDbView
TDbQuery

…相关类很多,最笨的办法可以在Doc中分别以C、R、T + Db进行查看

RDbs代表了一个连接到DBMS 服务器的Session。
RDbStoreDatabase、RDbNamedDatabase是Symbian里面的两种数据库,两者不能通用,后者是共享型的,使用更为广泛。
范例代码如下:
RDbs rdbs;
RDbNamedDatabase db;
User::LeaveIfError(rdbs.Connect());
User::LeaveIfError(db.Create(rdbs,_L(”C:\MyDb.db”),_L(”SECURE[0xEA3243EF]“)));
//当然,也可以使用另一个Create的重载版本创建数据库文件,第一个参数是一个RFs,不过那是不加密型的数据库
db.Open(rdbs,_L(”C:\MyDb.db”),_L(”SECURE[0xEA3243EF]“));
// 建表
db.Execute(_L(”CREATE TABLE table1(id INTEGER,name VARCHAR(16))”));
// 注:RDbNamedDatabase直接提供了表/索引操作的API(如CreateTable),但是使用稍嫌麻烦,需要CDbColSet、 TDbCol,不如直接使用Execute执行建表语句来得简单。但是直接使用建表SQL的坏处就是不支持事务,Execute之后直接生效,而使用 CreateTable等函数后,需要调用Commit(),当然也能使用Rollback进行回滚。
// 插数据
db.Execute(_L(”INSERT INTO table1 VALUES(1,’Coastline’)”));
db.Compact();
// 查数据
RDbView dbView;
TDbQuery dbQuery(_L(”SELECT * FROM table1 WHERE id=1″));
dbView.Prepare(db,dbQuery);
dbView.EvaluateAll();
for(dbView.FirstL();dbView.AtRow();dbView.NextL())
{
dbView.GetL();
TInt id = dbView.ColInt(1);
TBuf<16> name(dbView.ColInt(1));
// do sth with id & name
}
// 关闭
dbView.Close();
db.Close();
rdbs.Close();
注:以上代码缺乏数据库文件存在与否的检测等常规容错机制

Symbian中使用的SQL:(摘录+本人汉化)
# ‘SELECT
SELECT select-list FROM table-name [ WHERE search-condition ] [ ORDER BY sort-order ]
*3 search-condition types: compare , like , null

# DML : INSERT , DELETE , UPDATE
INSERT INTO table-name [ ( column-identifier,… ) ] VALUES ( column-value,… )
DELETE FROM table-name [ WHERE search-condition ]
UPDATE table-name SET update-column,… [ WHERE search-condition ]

# DDL : Work with the schema(即数据库)
CREATE TABLE table-name (column-definition,…)
DROP TABLE table-name
ALTER TABLE table-name { ADD add-column-set [ DROP drop-column-set ] | DROP drop-column-set }
CREATE [ UNIQUE ] INDEX index-name ON table-name ( sort-specification,… )
DROP INDEX index-name FROM table-name

常用数据类型(不完整)
['BIT' , 'INTEGER' , 'COUNTER' , 'BIGINT' , 'FLOAT' ,'TIMESTAMP' , 'VARCHAR(n)' , 'LONG VARCHAR' ]
*COUNTER is an auto-incremented unsigned integer 即自动递增的无符号整数,获取的时候要使用ColUint()。

DBMS错误码有四种类型分别是:
1 DBMS(ud_std.h)
———————
EDbUnimplemented, 0
EDbInvalidColumn, 1
EDbUninitialised, 2
EDbRowLengthOverflow, 3
EDbTooManyKeys, 4
EDbInvalidViewWindowParameters, 5
EDbWrongType, 6
EDbInvalidIncrementalStep, 7
EDbNoColumnsInSeekKey 8

2 DBMS-Server(sd_std.h)
————————-
EDbsUnimplemented, 0
EDbsInvalidColumn, 1
EDbsWrongType, 2
EDbsNoRowData, 3
EDbsNotInUpdate, 4
EDbsBadDescriptor, 5
EDbsBadHandle, 6
EDbsStreamMarkInvalid, 7
EDbsStreamLocationInvalid, 8
EDbsObserverRequestPending 9

3 DBMS-Store(us_std.h)
————————-
EDbUnimplemented, 0
EDbNoStore, 1
EDbCannotSeek, 2
EDbNotFixedFieldType, 3
EDbWrongType 4

4 DBMS-Table(ut_std.h)
————————-
EDbInvalidColumn, 0
EDbWrongType, 1
EDbInUpdate, 2
EDbNotInUpdate, 3
EDbInvalidRow, 4
EDbRowNotRead, 5
EDbReadOnly, 6
EDbTableOpen, 7
EDbNotEvaluated, 8
EDbStreamOpen, 9
EDbRowSetConstraintMismatch, 10
EDbBeginNestedTransaction, 11
EDbUpdatesPendingOnCommit, 12
EDbUpdatesPendingOnRollback, 13
EDbNoCurrentTransaction, 14
EDbStreamsPendingOnCommit, 15
EDbStreamsPendingOnRollback, 16
EDbInvalidBookmark 17

另外要说明的一点是:SQL语句末尾不要分号,否则执行返回错误码 -11

转自:http://coastline.freepgs.com/?p=12

分享到:
评论

相关推荐

    symbian的数据库资料

    在这个“symbian的数据库资料”中,我们可能会找到关于如何在Symbian平台上高效利用数据库的关键信息。 Symbian系统支持多种数据库管理系统(DBMS),其中最常用的是SQLite,这是一个轻量级、文件式的数据库,适合...

    一个简单的symbian数据库程序案例

    在Symbian操作系统上开发数据库应用程序是一个常见的需求,特别是在移动设备上进行数据管理时。"一个简单的Symbian数据库程序案例"提供了一个基础的示例,教你如何利用数据库技术实现本地存储。Symbian系统中通常...

    symbian 数据库操作笔记

    在Symbian操作系统中,数据库管理是应用程序开发的重要部分,特别是在需要存储和检索大量数据时。Symbian OS 提供了Series 60平台上的本地数据库解决方案——RDBMS(Relational Database Management System),它是...

    symbian数据库操作

    在Symbian操作系统中,数据库操作是应用程序开发中不可或缺的一部分,尤其对于需要存储和管理大量数据的应用来说。Symbian提供了强大的数据库管理系统(DBMS),使得开发者能够方便地执行添加、删除和查询等操作。本...

    浅谈 android,ios4,windows phone7 ,symbian^3

    浅谈 android,ios4,windows phone7 ,symbian^3 相关的技术和详细的介绍!!

    自制demo~ 在symbian3 SDK下测试连接SQLite3数据库~

    在Symbian 3 SDK环境下开发应用程序,连接SQLite3数据库是一项常见的任务,这对于移动设备上的数据存储至关重要。SQLite3是一个轻量级、嵌入式的、关系型数据库管理系统,它允许开发者在无需独立服务器进程的情况下...

    数据库审计系统需求说明.docx

    可以根据单个库、数据库组生成报表,包括支持严格按照塞班斯( SOX法案、等 级保护标准要求生成多维度综合报告。 支持按照数据库访问行为生成报表,智能识别帐号的增删、权限变更、密码修改、 特权操作等行为。 ...

    Windows Mobile 平台 EDB 数据库的 应用与开发

    市场上的主流智能手机操作系统包括Symbian、Windows Mobile、PalmOS和Linux等。其中,Windows Mobile基于Windows CE系统,专为智能移动终端设计,支持Smartphone和Pocket PC两大类别,分别强调电话功能和强大的数据...

    诺基亚S60(v3) 词典数据库abc原装英汉词典

    诺基亚S60(v3)平台是一款专为诺基亚智能手机设计的操作系统,它基于塞班系统,广泛应用于诺基亚的高端机型。在这个平台上,用户可以安装各种应用程序,其中包括学习工具,如词典软件。"abc原装英汉词典"就是这样一个...

    symbian s60数据库操作类

    DataBaseOper.h,DataBaseOper.cpp 为基类,VideoShareDBOper.h,VideoShareDBOper.cpp 为项目使用的继承类;您的类可能为:CxxxxDBOper;

    浅谈未来手机发展方向.docx

    【标题】:浅谈未来手机发展方向 【主要内容分析】: 未来的手机发展主要聚焦在几个关键领域,首先是智能手机的持续进化。智能手机已经占据了市场主流,它们使用开放式操作系统,允许第三方开发者根据操作系统API...

    如何创建数据库应用程序

    qt如何创建数据库应用程序 Qt的另外一大优点是它支持SQL。通过使用Qt的model/view结构,我们可以不用对SQL了解的太多即可编写出很强大的带有数据库的应用程序。如果你是一个SQL新手,你可以通过网络来获得很多有关...

    Symbian塞班操作系统

    ### Symbian塞班操作系统深度解析 #### Symbian简介:智能移动终端的先驱者 Symbian操作系统,源自英国宝意昂公司(Psion)的EPOC操作系统,其设计理念强调“使用电子产品如同品尝乳酪般简单”。EPOC的命名灵感...

    来电通数据库S60V3

    CallMaster_db_20090706 主要更新说明: 新增大量155, 157, 188号段数据; 修正一些数据错误;

    N81自带词典数据库

    3. **数据文件管理**:通过将特定的文件夹移动到指定位置,用户可以更新或替换词典数据库,体现了Symbian系统中应用程序数据管理的方式。 4. **文件格式与路径**:"101f9cfe"文件可能是数据库的压缩包,解压后需要放...

    Symbian(塞班)智能手机应用技巧

    ### Symbian(塞班)智能手机应用技巧 #### 塞班智能手机概述 智能手机的核心特征在于其搭载了一个开放式操作系统,这种系统允许用户直接安装并使用第三方软件,而非仅仅局限于预装的功能或者仅支持JAVA程序的手机。...

Global site tag (gtag.js) - Google Analytics