• WCDB
  • WCDB for iOS/macOS
    • 基本特性
    • 入门
      • 基本要求
      • 安装
      • 使用教程
      • 相关文档
  • WCDB for Android
    • 基本功能
    • 入门
      • 接入与迁移
      • 数据库修复
    • 从源码编译
      • 编译 WCDB
      • 编译依赖项
    • 文档

    PRs WelcomeRelease VersionWeChat Approved iOSWeChat Approved AndroidPlatform

    WCDB 相关讨论可以加我们的QQ群

    • WCDB 技术交流群: 190485752
    • WCDB iOS/macOS 群: 708134978
    • WCDB Android 群: 868268492

    WCDB

    WCDB是一个高效、完整、易用的移动数据库框架,基于SQLCipher,支持iOS, macOS和Android。

    WCDB for iOS/macOS

    基本特性

    • 易用,WCDB支持一句代码即可将数据取出并组合为object。

      • WINQ(WCDB语言集成查询):通过WINQ,开发者无须为了拼接SQL的字符串而写一大坨胶水代码。

      • ORM(Object Relational Mapping):WCDB支持灵活、易用的ORM。开发者可以很便捷地定义表、索引、约束,并进行增删改查操作。

    1. [database getObjectsOfClass:WCTSampleConvenient.class
    2. fromTable:tableName
    3. where:WCTSampleConvenient.intValue>=10
    4. limit:20];
    • 高效,WCDB通过框架层和sqlcipher源码优化,使其更高效的表现。

      • 多线程高并发:WCDB支持多线程读与读、读与写并发执行,写与写串行执行。

      • 批量写操作性能测试

    介绍 - 图6

    更多关于WCDB的性能数据,请参考benchmark。

    • 完整,WCDB覆盖了数据库相关各种场景的所需功能。

      • 加密:WCDB提供基于SQLCipher的数据库加密。
      • 损坏修复:WCDB内建了Repair Kit用于修复损坏的数据库。
      • 反注入:WCDB内建了对SQL注入的保护。

    入门

    基本要求

    • WCDB支持iOS 7、macOS 10.9以上。
    • WCDB需使用Xcode 8.0以上版本进行编译。
    • 需使用Objective-C++。

    安装

    • 通过Carthage安装
      • 先安装Carthage;
      • 在Cartfile中添加 github "Tencent/WCDB",并执行carthage update

    对于不需要 bitcode 的开发者,可以指定 —configuration WithoutBitcode,以降低二进制的包大小。

    • Carthage/Build/目录下iOS或Mac的 WCDB.framework 添加到你的项目工程配置的Build Phases->Linked Binary and Libraries中。
    • 点击你的项目工程配置的Build Phases中的+选项,在弹出菜单中选择New Run Script Phase。在创建的脚本中添加 carthage copy-frameworks ,并在Input Files中添加对应平台的路径$(SRCROOT)/Carthage/Build/iOS/WCDB.framework$(SRCROOT)/Carthage/Build/Mac/WCDB.framework
    • 在你的代码文件头引入头文件#import <WCDB/WCDB.h>
    • 由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm
      • 通过cocoapods安装
    • 先安装Cocoapods;
    • 通过 pod repo update 更新WCDB的cocoapods版本。
    • 在Podfile对应的target中,添加pod 'WCDB',并执行pod install —verbose
    • 在项目中使用CocoaPods生成的.xcworkspace运行工程。
    • 在你的代码文件头引入头文件#import <WCDB/WCDB.h>
    • 由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm
      • 通过动态库安装动态库与iOS 7不兼容,因此需支持iOS 7的需要通过静态库安装。
    • 获取WCDB源码,并更新sqlcipher的submodule。
      • git clone https://github.com/Tencent/wcdb.git
      • cd wcdb
      • git submodule update —init sqlcipher
    • WCDB.xcodeproj添加到你的工程中.
    • 在你的项目工程配置的General->Enbedded Binaries中添加WCDB.framework注意这里有两个WCDB.framework,要选择动态库那个。选完后可在Build Phases->Target Dependencies中确认,若为WCDB则正确,而WCDB iOS Static则是静态库使用的。
    • 在你的代码文件头引入头文件#import <WCDB/WCDB.h>
    • 由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm
      • 通过静态库安装:
    • 获取WCDB源码,并更新sqlcipher的submodule。
      • git clone https://github.com/Tencent/wcdb.git
      • cd wcdb
      • git submodule update —init sqlcipher
    • WCDB.xcodeproj添加到你的工程中.
    • 在你的项目工程配置的Build Phases->Target Dependencies中添加WCDB iOS Static.framework
    • 在你的项目工程配置的Build Phases->Linked Binary and Libraries中添加WCDB.frameworklibz.tbd注意,这里有两个WCDB.framework,需要添加WCDB iOS Statictarget下的WCDB.framework
    • 在你的项目工程配置的Build Settings->Other Linker Flags中添加-all_load-ObjC
    • 在你的代码文件头引入头文件#import <WCDB/WCDB.h>
    • 由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm

    使用教程

    使用教程请参考这里

    相关文档

    • 文档请参考wiki.
    • 接口请参考API reference
    • 性能数据请参考Benchmark
    • 示例代码请参考Sample
    • 如果你熟悉FMDB,并期望迁移到WCDB,我们提供了一份专门的迁移教程。请参考从FMDB迁移到WCDB

    WCDB for Android

    基本功能

    • 基于SQLCipher的数据库加密
    • 使用连接池实现并发读写
    • 内建 Repair Kit 可用于修复损坏数据库
    • 针对占用空间大小优化的数据库备份/恢复功能
    • 日志输出重定向以及性能跟踪接口
    • 内建用于全文搜索的 mmicu FTS3/4 分词器

    入门

    接入与迁移

    WCDB for Android 可通过 Maven 或 AAR 包引用,API 接口与 Android SDK 非常相近,所以将已有的 App 迁移到 WCDB 是相当容易的。

    详细请参看 Android 接入与迁移 与 sample-encryptdb 示例。

    数据库修复

    WCDB 可以使用 Repair Kit 或备份恢复来修复损坏的数据库,请参看 Android 数据库修复与 sample-repairdb 示例。

    从源码编译

    编译 WCDB

    你可以使用预编译的依赖库(OpenSSL crypto 和 SQLCipher)来编译 WCDB for Android,使用 Gradle 或 Android Studio 皆可。

    1. cd android
    2. ./gradlew build

    Android Studio 请导入 android 目录作为 Root Project。

    编译 WCDB 需要安装 Android NDK r11c 或以上,并在 android/local.properties 上配置好SDK 与 NDK 路径。Android Studio 一般会帮你配置好。

    编译依赖项

    如果你需要自己编译 OpenSSL 等依赖项,你需要一个 Bash 环境(Windows 可以安装 Cygwin 或MSys)、target 为本机的 C 编译器(如 GCC)、Perl 5 以及 Tcl。之后执行下面命令即可编译依赖项。

    1. export ANDROID_NDK_ROOT='/path/to/ndk'
    2. ./build-depends-android.sh

    编译依赖项不是必要的,你完全可以使用预先编译好的库。

    文档

    API 文档请参看 这里 (英文)。