WCDB 2.1.6

WCDB 2.1.6

测试已测试
Lang语言 CC
许可证 NOASSERTION
发布最后发布2024年6月

RingoDqiuwenchen维护。



WCDB 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能够应用在更多平台上。

构建和安装

以下wiki包含有关构建和安装WCDB的详细说明。

教程

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

贡献

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