客户端开发-数据库

来源:互联网 发布:计算瓷砖用量软件 编辑:程序博客网 时间:2024/04/27 19:25

嵌入式数据库

首选SQLite

获得过 Google-O'Reilly Open Source Awards 2005年大奖,Firefox, SecondLife 采用。

特性

基本SQL,包括事务
全文检索
能够整库强加密,或者字段加密
占用内存少、速度快满足大部分场合

详细 features见这儿。

使用
直接使用其接口不太方便,建议稍做封装

1 基本操作
create
sqlite3x::sqlite3_connection con("path/to/dbfile");
con.executenonquery("CREATE TABLE IF NOT EXISTS user(name TEXT PRIMARY KEY, passwd TEXT)");

select
sqlite3x::sqlite3_command cmd(con, "SELECT name, passwd FROM user ORDER BY time DESC");
sqlite3x::sqlite3_reader reader = cmd.executereader();
while(reader.read()) {
  std::string name = reader.getstring(0);
  std::string passwd = reader.getstring(1);
}

update
sqlite3x::sqlite3_command cmd(con, "REPLACE INTO user(passwd) values (?)");
cmd.bind(1, "new passwd");
cmd.executenonquery();

2 全文检索
WHERE field LIKE "%dog%"

3 加密
编译 sqlite3 时定义 SQLITE_HAS_CODEC 宏,并实现
int sqlite3_key(sqlite3 *db, const void *zKey, int nKey);
int sqlite3_rekey(sqlite3 *db, const void *zKey, int nKey);
等函数。

4 注意
其接口分utf8, unicode两种,接口不同数据库文件内码也会不同。
其命令行工具是排错的好帮手

原创粉丝点击