WCDB.cpp 2.1.6

×

安装指南



×

  • Qiuwen-Chen

WCDB

PRs Welcome Release Version WeChat Approved iOS WeChat Approved Android Platform

中文版本请参看这里

WCDB 是一个高效、完整的、易于使用的移动数据库框架,用于微信应用程序。它基于 SQLite 和 SQLCipher,支持三种语言:C++、Swift 和 Objective-C。

特性

易于使用

  • ORM (对象关系映射):WCDB 提供了一个灵活且易于使用的 ORM,用于创建表、索引和约束,并通过 C++/Swift/Objc 对象进行 CRUD 操作。
  • WINQ (WCDB 集成查询语言):WINQ 是一种原生数据查询功能,它允许开发者无需编写代码来连接 SQL 查询字符串。

使用 ORM 和 WINQ,您可以一行代码即可在数据库中插入、更新、查询和删除对象

// C++
database.insertObjects<Sample>(Sample(1, "text"), myTable);
database.updateRow("text2", WCDB_FIELD(Sample::content), myTable, WCDB_FIELD(Sample::id) == 1);
auto objects = database.getAllObjects<Sample>(myTable, WCDB_FIELD(Sample::id) > 0);
database.deleteObjects(myTable, WCDB_FIELD(Sample::id) == 1);
// Swift
try database.insert(Sample(id:1, content:"text"), intoTable: myTable)
try database.update(table: myTable,
                    on: Sample.Properties.content,
                    with: "text2"
                    where:Sample.Properties.id == 1)
let objects: [Sample] = try database.getObjects(fromTable: myTable,
                                                where: Sample.Properties.id > 0)
try database.delete(fromTable: myTable where: Sample.Properties.id == 1)
// Objc
[database insertObject:sample intoTable:myTable];
[database updateTable:myTable
          setProperty:Sample.content
              toValue:@"text2"
                where:Sample.id == 1];
NSArray* objects = [database getObjectsOfClass:Sample.class
                                     fromTable:myTable
                                         where:Sample.id > 0];
[database deleteFromTable:myTable where:Sample.id == 1];

高效

通过框架层和 sqlcipher 源码优化,WCDB 具有更高的性能。

  • 多线程并发:WCDB 通过连接池支持并发读读和读写访问。
  • 深度优化:WCDB 对 SQLite 的源代码和配置进行了深度优化,以适应移动终端的开发场景。同时,WCDB 也对常见耗时场景进行了优化,如批量写入数据。

完整

WCDB 总结了实践中的常见问题,为数据库开发提供了更完整的发展经验。

  • 加密支持:WCDB 支持通过 [SQLCipher][sqlcipher] 对数据库进行加密。
  • 损坏恢复:WCDB 提供了一个内置的修复工具,用于数据库损坏恢复。
  • 反注入:WCDB 提供了内置的防止SQL注入的保护。
  • 数据库模型升级:数据库模型绑定到类定义上,以便数据库字段的添加、删除和修改与类变量的定义保持一致。
  • 全文搜索:WCDB 提供了易于使用的全文搜索接口,并包括多个语言的分词器。
  • 数据迁移:WCDB 支持通过简单的配置将数据从一个数据库迁移到另一个数据库。开发者不需要关心迁移的中间状态和进度。

兼容性

WCDB 在三种语言(C++、Swift 和 Objc)中都有接口。不同语言的接口共享相同的底层逻辑。下图显示了 WCDB 的代码结构

在这样的架构下,不同语言的 WCDB 可以具有相同的接口结构和接口功能。在一个项目中,你可以使用一个 WCDB 在不同语言中编写数据库代码。不同语言的数据库逻辑不会冲突。一些全局接口,如错误监控,可以同时在不同语言的数据库逻辑上工作。

我们将在不久的将来为 WCDB 添加更多的语言支持,例如 JavaKotlinFlutter,以便 WCDB 可以应用于更多平台。

以下链接包含关于构建和安装 WCDB 的详细说明。

以下文档包含关于构建和安装 WCDB 的 详细说明。

以下链接包含关于教程的信息。

以下可以找到不同语言的教程。

以下链接包含关于贡献的信息。

如果你对贡献感兴趣,请查看 [CONTRIBUTING.md],也可以加入我们的 腾讯开源计划