首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> Symbian开发 >> 正文
S60平台:使用DBMS APIs —在DBMS中使用SQL语言(3)
作者:Leo 译    文章来源:本站原创    更新时间:2006-8-26 8:33:41

4.4  使用TDbQuery 类
该类的设计目的是传递一些能够容纳SQL的描述符,用以替代缺省组织方式为普通文本比较的TDbQuery对象。例如,在下列代码片断中:
_LIT(KSQLStatement ="SELECT Author, Title FROM Books WHERE Author LIKE 'BR*'");
RDbView dbview;
view.Prepare(iBookDb, KSQLStatement);
the view.Prepare statement is functionally equivalent to:
view.Prepare(iBookDb, TDbQuery(KSQLStatement, EDbCompareNormal));
为了确定其他比较类型,查询对象必须安规定格式定义,例如:
view.Prepare(iBookDb, TDbQuery(KSQLStatement, EDbCompareFolded));

4.5 SQL架构与数据更新

可以通过使用SQL命令对SQL架构和数据进行修改,DBMS接口中等价的函数为RDbDatabase和RDbIncremental。
提示:使用SQL语句可能不能完成本地DBMS API所提供的全部功能。
4.5.1 数据库定义语言(DDL)
DDL被用来修改数据库中的高级功能;这些功能包括在数据库中创建和删除表以及索引。
DDL语句不能在数据库中修改数据;然而,当一个表被删除时,表名下的所有数据都丢失了。删除一个索引即简单的移除了通过该索引获取特殊的表数据的能力。
4.5.1.1 创建表语句
CREATE TABLE table-name (column-definition,…)
4.5.1.2 删除表语句
DROP TABLE table-name
4.5.1.3 修改表语句
ALTER TABLE table-name { ADD add-column-set [ DROP drop-column-set ] | DROP drop-column-set }
4.5.1.4 创建索引语句
CREATE [ UNIQUE ] INDEX index-name ON table-name ( sort-specification,… )
4.5.1.5 删除索引语句
DROP INDEX index-name FROM table-name

4.5.2 SQL 数据跟新语言(DML)
DML语言可在列级修改数据库,用法包括行插入操作,删除操作以及更新操作。
DML语句可以修改数据库中已经存在的数据内容。
4.5.2.1 插入语句
INSERT INTO table-name [ ( column-identifier,… ) ] VALUES ( column-value,… )
4.5.2.2 删除语句
DELETE FROM table-name [ WHERE search-condition ]
4.5.2.3 更新语句
UPDATE table-name SET update-column,… [ WHERE search-condition ]

4.5.3 例子
使用DDL或DML语句最简单的方法是执行RdbDatabase。如果操作耗时太长,推荐使用增量方法(参见第5章,“增量数据库操作”)。
下列代码片断简要显示了数据库架构与数据的更新:
private: // 数据成员
RDbStoreDatabase iBookDb; // 可以用 RDbNamedDatabase 替换
...
TInt CBookDb::AddDateColumn()
{
_LIT(KSqlAddDate, "ALTER TABLE Books ADD PublishDate DATE");
return iBookDb.Execute(KSqlAddDate);
}
TInt CBookDb::DropBooksTable()
{
_LIT(KSqlDropBooks, "DROP TABLE Books");
return iBookDb.Execute(KSqlDropBooks);
}
TInt CbookDb::DeleteAllBooks()
{
_LIT(KSqlDeleteAllBooks, "DELETE FROM Books");
return iBookDb.Execute(KSqlDeleteAllBooks);
}
// 删除以F-letter名字起始的书。
TInt CbookDb::DeleteFBooks()
{
_LIT(KSqlDeleteFBooks, "DELETE FROM Books where
Title like ‘F*’");
return iBookDb.Execute(KSqlDeleteFBooks);
}
TInt CBookDb::UpdateBookTitle(const TDesC& aOldTitleKey,
const TDesC& aNewTitle)
{
_LIT(KSQLUpdateStart, "UPDATE Books SET Title = '");
_LIT(KSQLUpdateMiddle, "' WHERE Title = '");
_LIT(KSQLUpdateEnd, "'");
// SQL: UPDATE Books SET Title = ‘aNewTitle’
// WHERE Title = ‘aOldTitleKey’
TBuf<KCustomSqlMaxLength> sqlStr;
sqlStr.Append(KSQLUpdateStart);
sqlStr.Append(aNewTitle);
sqlStr.Append(KSQLUpdateMiddle);
sqlStr.Append(aOldTitleKey);
sqlStr.Append(KSQLUpdateEnd);
return iBookDb.Execute(sqlStr);
}

此文为开发视界翻译转载者请注明出处否则追究法律责任

相关文章:
Symbian DBMS中的检索
cpp命令
容器控制方法
在消息对话框中创建链接
播放WAV文件
如何在SYMBIAN60中编写DLL
在Symbian exe 程序中显示图形
如何才能实现这个非同期处理
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号