WCDB is a cross-platform database framework developed by WeChat.

Overview

WCDB

PRs Welcome Release Version WeChat Approved iOS WeChat Approved Android Platform

中文版本请参看这里

WCDB is an efficient, complete, easy-to-use mobile database framework used in the WeChat application. It's currently available on iOS, macOS and Android.

WCDB for iOS/macOS

Features

  • Easy-to-use. Through WCDB, you can get objects from database in one line code.

    • WINQ (WCDB language integrated query): WINQ is a native data querying capability which frees developers from writing glue code to concatenate SQL query strings.

    • ORM (Object Relational Mapping): WCDB provides a flexible, easy-to-use ORM for creating tables, indices and constraints, as well as CRUD through ObjC objects.

      [database getObjectsOfClass:WCTSampleConvenient.class
                        fromTable:tableName
                            where:WCTSampleConvenient.intValue>=10
                            limit:20];
  • Efficient. Through the framework layer and sqlcipher source optimization, WCDB have more efficient performance.

    • Multi-threaded concurrency: WCDB supports concurrent read-read and read-write access via connection pooling.
    • Batch Write Performance Test. For more benchmark data, please refer to our benchmark.
  • Complete.

    • Encryption Support: WCDB supports database encryption via SQLCipher.
    • Corruption recovery: WCDB provides a built-in repair kit for database corruption recovery.
    • Anti-injection: WCDB provides a built-in protection from SQL injection.

Getting Started

Prerequisites

  • Apps using WCDB can target: iOS 7 or later, macOS 10.9 or later.
  • Xcode 8.0 or later required.
  • Objective-C++ required.

Installation

  • Via Cocoapods:
    1. Install CocoaPods.
    2. Run pod repo update to make CocoaPods aware of the latest available WCDB versions.
    3. In your Podfile, add pod 'WCDB' to your app target.
    4. From the command line, run pod install.
    5. Use the .xcworkspace file generated by CocoaPods to work on your project.
    6. Add #import <WCDB/WCDB.h> at the top of your Objective-C++ source files and start your WCDB journey.
    7. Since WCDB is an Objective-C++ framework, for those files in your project that includes WCDB, you should rename their extension .m to .mm.
  • Via Carthage:
    1. Install Carthage.
    2. Add github "Tencent/WCDB" to your Cartfile.
    3. Run carthage update.
    4. Drag WCDB.framework from the appropriate platform directory in Carthage/Build/ to the Linked Binary and Libraries section of your Xcode project’s Build Phases settings.
    5. On your application targets' Build Phases settings tab, click the "+" icon and choose New Run Script Phase. Create a Run Script with carthage copy-frameworks and add the paths to the frameworks under Input Files: $(SRCROOT)/Carthage/Build/iOS/WCDB.framework or $(SRCROOT)/Carthage/Build/Mac/WCDB.framework.
    6. Add #import <WCDB/WCDB.h> at the top of your Objective-C++ source files and start your WCDB journey.
    7. Since WCDB is an Objective-C++ framework, for those files in your project that includes WCDB, you should rename their extension .m to .mm.
  • Via Dynamic Framework: Note that Dynamic frameworks are not compatible with iOS 7. See “Static Framework” for iOS 7 support.
    1. Getting source code from git repository and update the submodule of sqlcipher.
      • git clone https://github.com/Tencent/wcdb.git
      • cd wcdb
      • git submodule update --init sqlcipher
    2. Drag WCDB.xcodeproj in wcdb/apple/ into your project.
    3. Add WCDB.framework to the Enbedded Binaries section of your Xcode project's General settings. Note that there are two frameworks here and the dynamic one should be chosen. You can check it at Build Phases->Target Dependencies. The right one is WCDB while `WCDB iOS Static is used for static lib.
    4. Add #import <WCDB/WCDB.h> at the top of your Objective-C++ source files and start your WCDB journey.
    5. Since WCDB is an Objective-C++ framework, for those files in your project that includes WCDB, you should rename their extension .m to .mm.
  • Via Static Framework:
    1. Getting source code from git repository and update the submodule of sqlcipher.
      • git clone https://github.com/Tencent/wcdb.git
      • cd wcdb
      • git submodule update --init sqlcipher
    2. Drag WCDB.xcodeproj in wcdb/apple/ into your project.
    3. Add WCDB iOS Static to the Target Dependencies section of your Xcode project's Build Phases settings.
    4. Add WCDB.frameworklibz.tbd to the Linked Binary and Libraries section of your Xcode project's Build Phases settings. Note that there are two WCDB.framework, you should choose the one from WCDB iOS Static target.
    5. Add -all_load and -ObjC to the Other Linker Flags section of your Xcode project's Build Settings.
    6. Add #import <WCDB/WCDB.h> at the top of your Objective-C++ source files and start your WCDB journey.
    7. Since WCDB is an Objective-C++ framework, for those files in your project that includes WCDB, you should rename their extension .m to .mm.

Tutorials

Tutorials can be found here.

Documentations

  • Documentations can be found on our Wiki.
  • API references for iOS/macOS can be found here.
  • Performance data can be found on our benchmark.

WCDB for Android

Features

  • Database encryption via SQLCipher.
  • ORM/persistence solution via Room from Android Architecture Components.
  • Concurrent access via connection pooling from modern Android framework.
  • Repair toolkit for database corruption recovery.
  • Database backup and recovery utility optimized for small backup size.
  • Log redirection and various tracing facilities.
  • API 14 (Android 4.0) and above are supported.

Getting Started

To include WCDB to your project, choose either way: import via Maven or via AAR package.

Import via Maven

To import WCDB via Maven repositories, add the following lines to build.gradle on your app module:

dependencies {
    compile 'com.tencent.wcdb:wcdb-android:1.0.8'
    // Replace "1.0.8" to any available version.
}

This will cause Gradle to download AAR package from JCenter while building your application.

If you want to use Room persistence library, you need to add the Google Maven repository to build.gradle to your root project.

allprojects {
    repositories {
        jcenter()
        google()    // Add this line
    }
}

Also add dependencies to module build.gradle.

dependencies {
    compile 'com.tencent.wcdb:room:1.0.8'
    // Replace "1.0.8" to any available version.

    annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
    // Don't forget to include Room annotation compiler from Google.
}

Import Prebuilt AAR Package

  1. Download AAR package from release page.   2. Import the AAR as new module. In Android Studio, select File -> New -> New Module... menu and choose "Import JAR/AAR Package".   3. Add a dependency on the new module. This can be done using File -> Project Structure... in Android Studio, or by adding following code to application's build.gradle:

dependencies {
    // Change "wcdb" to the actual module name specified in step 2.
    compile project(':wcdb')
}

Migrate from Plain-text SQLite Databases

WCDB has interfaces very similar to Android SQLite Database APIs. To migrate you application from AOSP API, change import path from android.database.* to com.tencent.wcdb.*, and android.database.sqlite.* to com.tencent.wcdb.database.*. After import path update, your application links to WCDB instead of AOSP API.

To open or create an encrypted database, use with-password versions of SQLiteDatabase.openOrCreateDatabase(), SQLiteOpenHelper.getWritableDatabase(), or Context.openOrCreateDatabase().

Note: WCDB uses byte[] for password instead of String in SQLCipher Android Binding.

String password = "MyPassword";
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase("/path/to/database", password.getBytes(), 
        null, null);

See sample-encryptdb for sample for transferring data between plain-text and encrypted databases.

Use WCDB with Room

To use WCDB with Room library, follow the Room instructions. The only code to change is specifying WCDBOpenHelperFactory when getting instance of the database.

SQLiteCipherSpec cipherSpec = new SQLiteCipherSpec()
        .setPageSize(4096)
        .setKDFIteration(64000);

WCDBOpenHelperFactory factory = new WCDBOpenHelperFactory()
        .passphrase("passphrase".getBytes())  // passphrase to the database, remove this line for plain-text
        .cipherSpec(cipherSpec)               // cipher to use, remove for default settings
        .writeAheadLoggingEnabled(true)       // enable WAL mode, remove if not needed
        .asyncCheckpointEnabled(true);        // enable asynchronous checkpoint, remove if not needed

AppDatabase db = Room.databaseBuilder(this, AppDatabase.class, "app-db")
                .allowMainThreadQueries()
                .openHelperFactory(factory)   // specify WCDBOpenHelperFactory when opening database
                .build();

See sample-persistence for samples using Room library with WCDB. See sample-room-with-a-view for samples using Room library with WCDB and other architecture components from Google.

sample-room-with-a-view comes from Google's CodeLabs with modification of just a few rows. Search for [WCDB] keyword for the modification.

See here for the original tutorial.

Corruption Recovery

See sample-repairdb for instructions how to recover corrupted databases using RepairKit.

Redirect Log Output

By default, WCDB prints its log message to system logcat. You may want to change this behavior in order to, for example, save logs for troubleshooting. WCDB can redirect all of its log outputs to user-defined routine using Log.setLogger(LogCallback) method.

Build from Sources

Build WCDB Android with Prebuilt Dependencies

WCDB itself can be built apart from its dependencies using Gradle or Android Studio. To build WCDB Android library, run Gradle on android directory:

$ cd android
$ ./gradlew build

Building WCDB requires Android NDK installed. If Gradle failed to find your SDK and/or NDK, you may need to create a file named local.properties on the android directory with content:

sdk.dir=path/to/sdk
ndk.dir=path/to/ndk

Android Studio will do this for you when the project is imported.

Build Dependencies from Sources

WCDB depends on OpenSSL crypto library and SQLCipher. You can rebuild all dependencies if you wish. In this case, a working C compiler on the host system, Perl 5, Tcl and a bash environment is needed to be installed on your system.

To build dependencies, checkout all submodules, set ANDROID_NDK_ROOT environment variable to your NDK path, then run build-depends-android.sh:

$ export ANDROID_NDK_ROOT=/path/to/ndk
$ ./build-depends-android.sh

This will build OpenSSL crypto library and generate SQLCipher amalgamation sources and place them to proper locations suitable for WCDB library building.

Documentations

  • Documentations can be found on our Wiki.
  • API references for Android can be found here.

Contributing

If you are interested in contributing, check out the [CONTRIBUTING.md], also join our Tencent OpenSource Plan.

Issues
  • Xcode 9.3 Support?

    Xcode 9.3 Support?

    The language of WCDB

    Swift

    The version of WCDB

    v1.0.6

    The platform of WCDB

    iOS

    The installation of WCDB

    Cocoapods

    What's the issue?

    When I use Xcode 9.2 everything works, but after updating to Xcode 9.3, I can't compile it. See the chart for specific errors

    enhancement 
    opened by aidevjoe 68
  • library routine called out of sequence

    library routine called out of sequence

    The language of WCDB

    e.g. Objective-C, Swift or Java

    Objective-C

    The version of WCDB

    e.g. v1.0.5

    v1.0.7

    The platform of WCDB

    e.g. iOS, macOS or Android

    iOS

    The installation of WCDB

    e.g. Cocoapods, Carthage, Maven, AAR Package or Git clone

    Cocoapods

    What's the issue?

    Post the outputs or screenshots for errors.

    Explain what you want by example or code in English.

    fc50a5a3-88df-40d6-9a04-832ffe41307f

    when we use the WCDB.framework & sqlcipher.framework, we find the fmdb library method report a error with "library routine called out of sequence.".but when we use the source pod,the project run normally.

    this is demo

    "WCDBDemo-Framework.zip" is demo with WCDB.framework & sqlcipher.framework. "WCDBDemo-SCCode.zip" is demo with the source pod.

    question stale 
    opened by FrankyShy 40
  • 通过事务批量插入无效

    通过事务批量插入无效

    The language of WCDB

    e.g. Objective-C, Swift or Java

    The version of WCDB

    e.g. v1.0.5

    The platform of WCDB

    e.g. iOS, macOS or Android

    The installation of WCDB

    e.g. Cocoapods, Carthage, Maven, AAR Package or Git clone

    What's the issue?

    Post the outputs or screenshots for errors.

    Explain what you want by example or code in English.

    [transaction begin]; [transaction insertObjects:mArr.copy into:@"new_usr"]; [transaction commit]; 事务批量使用这种形式貌似没成功,使用block是ok的,why

    question Objective-C 
    opened by Will-ZJ 30
  • cocoapods导入问题

    cocoapods导入问题

    The language of WCDB

    objc

    The version of WCDB

    e.g. v1.0.7.5

    The platform of WCDB

    ios

    The installation of WCDB

    cocoapods

    What's the issue?

    Analyzing dependencies Downloading dependencies Using AFNetworking (3.2.1) Installing SQLiteRepairKit (1.2.2)

    [!] Error installing SQLiteRepairKit [!] /usr/bin/git clone https://github.com/Tencent/wcdb.git /var/folders/pz/kb0qzscs25l6_qnx262fgtw40000gn/T/d20190829-31516-mdj9du --template= --single-branch --depth 1 --branch v1.0.8.2

    Cloning into '/var/folders/pz/kb0qzscs25l6_qnx262fgtw40000gn/T/d20190829-31516-mdj9du'... error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54 fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed

    question 
    opened by wdq123550 26
  • 当我尝试加密数据库的时候遇到这个bug

    当我尝试加密数据库的时候遇到这个bug

    buglog:attempt to re-open an already-closed object 并且导致应用崩溃。 是否是我在不同的线程中打开了相同的数据库引起的。

    help wanted Java 
    opened by liner02 24
  • WCTTokenizerNameWCDB is nil

    WCTTokenizerNameWCDB is nil

    The language of WCDB

    Objective-C

    The version of WCDB

    v1.0.5

    The platform of WCDB

    iOS

    The installation of WCDB

    Cocoapods

    What's the issue?

    There are many TFS Class similar to WCTSampleFTSData in my project. I tried to do the same thing with demo, but the project crashed at startup. The information is as follows. Could it be that WCTTokenizerNameWCDB is nil causing?

    wechatimg512

    bug 
    opened by Graphicooooone 23
  • I follow the wiki “Via Static Framework”,but still has error blow,some body help??

    I follow the wiki “Via Static Framework”,but still has error blow,some body help??

    The language of WCDB

    Objective-C

    The platform of WCDB

    iOS (Xcoed 10.1)

    The installation of WCDB

    Via Static Framework

    What's the issue?

    Undefined symbols for architecture x86_64: "_sqlcipher_codec_ctx_get_data", referenced from: _sqliterkCryptoDecode in WCDB(sqliterk_crypto.o) "_sqlcipher_codec_key_derive", referenced from: _sqliterkCryptoDecode in WCDB(sqliterk_crypto.o) "_sqlcipher_codec_ctx_set_pagesize", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) "_sqlcipher_codec_ctx_init", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) "_sqlcipher_page_cipher", referenced from: _sqliterkCryptoDecode in WCDB(sqliterk_crypto.o) "_sqlcipher_codec_ctx_get_reservesize", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) "_sqlcipher_activate", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) "_sqlcipher_codec_ctx_set_cipher", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) "_sqlcipher_codec_ctx_set_use_hmac", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) "_sqlcipher_codec_ctx_set_kdf_iter", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) "_sqlcipher_deactivate", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) _sqliterkCryptoFreeCodec in WCDB(sqliterk_crypto.o) "_sqlcipher_codec_ctx_get_pagesize", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) _sqliterkCryptoDecode in WCDB(sqliterk_crypto.o) "_sqlcipher_codec_ctx_free", referenced from: _sqliterkCryptoSetCipher in WCDB(sqliterk_crypto.o) _sqliterkCryptoFreeCodec in WCDB(sqliterk_crypto.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

    question stale Objective-C 
    opened by dolway 23
  • iOS无法打开存在bundle里的数据库

    iOS无法打开存在bundle里的数据库

    对数据库只有读的操作,把数据库预先准备好打入bundle里,却发现真机上无法打开,是不支持bundle里的数据库吗?

    enhancement 
    opened by flyico 20
  • Could fix  a crash bug ?

    Could fix a crash bug ?

    The language of WCDB

    Objective-C

    The version of WCDB

    v1.0.6

    The platform of WCDB

    iOS

    The installation of WCDB

    Cocoapods

    What's the issue?

    crash stack from Bugly, how to resolve it ? thanks!

    2018-04-27 11 28 17

    stale 
    opened by tigerandy163com 17
  • Would implement command INSERT INTO SELECT FROM ?

    Would implement command INSERT INTO SELECT FROM ?

    The language of WCDB

    Objective-C, Swift or Java

    The version of WCDB

    v1.0.7

    The platform of WCDB

    iOS

    The installation of WCDB

    Cocoapods

    What's the issue?

    Would implement command INSERT INTO SELECT FROM , for table content copy as sqlite migration ?

    SQLite office doc Making Other Kinds Of Table Schema Changes

    bug question 
    opened by Jonwei 16
  • wcdb 可以访问wxsqlite加密的数据库吗

    wcdb 可以访问wxsqlite加密的数据库吗

    由于最近在学习wxsqlite 但是发现安卓端没有对应的jni,请问wcdb可以访问wxsqlite加密的数据库吗

    opened by baneyue 0
  • BLYMainRunloopMonitorManager monitorThreadRun  this crash solved?

    BLYMainRunloopMonitorManager monitorThreadRun this crash solved?

    The language of WCDB

    e.g. Objective-C, Swift or Java

    The version of WCDB

    e.g. v1.0.5

    The platform of WCDB

    e.g. iOS, macOS or Android

    The installation of WCDB

    e.g. Cocoapods, Carthage, Maven, AAR Package or Git clone

    What's the issue?

    Post the outputs or screenshots for errors.

    Explain what you want by example or code in English.

    opened by zht415 0
  • 子查询

    子查询

    SELECT datetime(msg_time/1000, 'unixepoch', 'localtime') FROM (SELECT * FROM im_msg ORDER BY msg_time DESC) GROUP BY (STRFTIME('%Y-%m-%d', DATETIME(msg_time/1000, 'unixepoch', 'localtime')))

    请问以上子查询在wcdb怎么使用

    opened by JHCarpediem 0
  • Referencing operator function '==' on 'BinaryInteger' requires that 'Model.CodingKeys' conform to 'BinaryInteger'

    Referencing operator function '==' on 'BinaryInteger' requires that 'Model.CodingKeys' conform to 'BinaryInteger'

    模型建好之后 where语句却出现这个错误

    opened by zhuimengFIRE 1
  • crash:  sqlcipher sqlite3DbMallocRawNN + 64

    crash: sqlcipher sqlite3DbMallocRawNN + 64

    The language of WCDB

    e.g. Objective-C, Swift or Java

    swift

    The version of WCDB

    e.g. v1.0.5

    1.0.8.2

    The platform of WCDB

    e.g. iOS, macOS or Android

    iOS

    The installation of WCDB

    e.g. Cocoapods, Carthage, Maven, AAR Package or Git clone

    Cocoapods

    What's the issue?

    Post the outputs or screenshots for errors.

    Explain what you want by example or code in English.

    firebase捕获: image

    源码:

    数据库相关

        func insertOrUpdateWebStorage(dict: [String: String]?, appID: String?) -> Bool {
            guard let dict = dict, let appId = appID, dict.count >= 2, appId.count > 0 else { return false }        
            let model = KDWebStorageModel(dict: dict, appId: appId)
            
            do {
                try database.insertOrReplace(objects: [model], intoTable: tableName(type: XTTableType.webStorage))
            } catch  {
                return false
            }
            
            return true
        }
    
    

    模型映射

    import Foundation
    import WCDBSwift
    
    class KDWebStorageModel:KDJSONModel,TableCodable {
        var key: String?
        var value: String?
        var appId: String?
        
        public enum CodingKeys: String, CodingTableKey {
            public typealias Root = KDWebStorageModel
            public static let objectRelationalMapping = TableBinding(CodingKeys.self)
            
            //字段约束
            static var columnConstraintBindings: [CodingKeys: ColumnConstraintBinding]? {
                return [
                    key: ColumnConstraintBinding(isPrimary: true),
                ]
            }
            
            case key
            case value
            case appId
        }
        
        
        init(dict: [String: String], appId: String) {
            super.init()  
            if let key = dict["key"], let value = dict["value"] {
                self.key = appId + key
                self.value = value
                self.appId = appId
            }
        }
        
        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
        
        required init(data: Data!) throws {
            fatalError("init(data:) has not been implemented")
        }
        
        required init(dictionary dict: [AnyHashable : Any]!) throws {
            fatalError("init(dictionary:) has not been implemented")
        }
    }
    

    遇到很多崩溃在此处(其它表也是同样的):sqlcipher sqlite3DbMallocRawNN + 64,想知道如何解决?以及什么时候可以更新版本出来,2年多没升级了。。。

    opened by yixianxueqi 2
  • SQLite version 3.15.2  有很多漏洞,官网已经更新了,咱们什么时候更新呀

    SQLite version 3.15.2 有很多漏洞,官网已经更新了,咱们什么时候更新呀

    #define SQLITE_VERSION "3.15.2" #define SQLITE_VERSION_NUMBER 3015002 #define SQLITE_SOURCE_ID "2016-11-28 19:13:37 bbd85d235f7037c6a033a9690534391ffeacecc8"

    opened by QiuYeHong90 0
  • 创建数据库失败

    创建数据库失败

    当前版本1.0.7,一直使用正常的测试机,iphone 6s ,13.5.1的系统,突然掉用数据库爆以下这个错误。 create WCDB Table failure at Document Code:21, Type:SQLite, Msg:[sqlite3_key] is not supported for current config, Tag:0, ExtCode:21, Path:/var/mobile/Containers/Data/Application/94F09C30-610D-469F-B7D1-687BEFBFCE00/Documents/chatDB.db, Op:7

    opened by cxz137131304 0
  • 可以使用以下这种方式进行批量删除数据库文件?

    可以使用以下这种方式进行批量删除数据库文件?

    // 可以使用这种方式进行批量删除数据库文件?
     static func batchDeleteDataBaseFiles(dataBaseList: [Database]) {
            // 删除广告数据库文件
            guard dataBaseList.count > 0 else {
                return
            }
            DispatchQueue.global().async {
                do {
                    try dataBaseList.forEach({ dbase in
                        print("dbase = \(dbase.path)")
                        try dbase.close {
                            try dbase.removeFiles()
                        }
                    })
                } catch let error {
                    print("删除数据库文件失败 \(error.localizedDescription)")
                }
            }
        }
    
    opened by KBvsMJ 0
  • crash

    crash

    The language of WCDB

    Swift

    The version of WCDB

    1.0.8.2

    The platform of WCDB

    iOS

    The installation of WCDB

    Cocoapods

    What's the issue?

    7 WCDBSwift 0x0000000107093e28 $s9WCDBSwift6HandleC7prepareyAA0B9StatementCAA0D0_pKF + [Handle.swift : 90] 8 WCDBSwift 0x0000000107083fbc $s9WCDBSwift8DatabaseC7prepareyAA25RecyclableHandleStatementCAA0F0_pKF + [Core.swift : 47] 9 WCDBSwift 0x00000001070b1874 $s9WCDBSwift6SelectC10allObjects2ofSayxGxm_tKAA14TableDecodableRzlF + [ : 0] 10 WCDBSwift 0x000000010709d0b4 $s9WCDBSwift15SelectInterfacePA2A4CoreCRbzrlE10getObjects2on9fromTable5where7orderBy5limit6offsetSayqd__GSayAA19PropertyConvertible_pG_SSAA010ExpressionP0_pSgSayAA05OrderP0_pGSgA2QtKAA0I9DecodableRd__lF + [Interface.swift : 713] 11 WCDBSwift 0x000000010709fb94 $s9WCDBSwift11TransactionCAA15SelectInterfaceA2aDP10getObjects2on9fromTable5where7orderBy5limit6offsetSayqd__GSayAA19PropertyConvertible_pG_SSAA010ExpressionP0_pSgSayAA05OrderP0_pGSgA2QtKAA0I9DecodableRd__lFTW + [ : 0] 12 WCDBSwift 0x00000001070a0354 $s9WCDBSwift8DatabaseCAA15SelectInterfaceA2aDP10getObjects2on9fromTable5where7orderBy5limit6offsetSayqd__GSayAA19PropertyConvertible_pG_SSAA010ExpressionP0_pSgSayAA05OrderP0_pGSgA2QtKAA0I9DecodableRd__lFTW 13 WCDBSwift 0x000000010709d204 $s9WCDBSwift15SelectInterfacePA2A4CoreCRbzrlE10getObjects2on9fromTable5where7orderBy5limit6offsetSayqd__GAA19PropertyConvertible_pd_SSAA010ExpressionP0_pSgSayAA05OrderP0_pGSgA2PtKAA0I9DecodableRd__lF + [Interface.swift : 723]

    现在app中大部分的crash 来自于贵sdk·· 麻烦更新一下吧··

    opened by WangKunKun 0
Releases(v1.0.8.2)
Owner
Tencent
Tencent
Mac Native Mongodb Client

System Requirements Mac OS X (10.8.x, 10.9.x, 10.10.x), intel 64bit based. Download HERE Or you can compile it yourself using Xcode Build Just build i

Jérôme Lebel 2.5k Sep 12, 2021
A Cocoa / Objective-C wrapper around SQLite

FMDB v2.7 This is an Objective-C wrapper around SQLite. The FMDB Mailing List: https://groups.google.com/group/fmdb Read the SQLite FAQ: https://www.s

August 13.6k Sep 21, 2021
Official home of the DB Browser for SQLite (DB4S) project. Previously known as "SQLite Database Browser" and "Database Browser for SQLite". Website at:

DB Browser for SQLite What it is DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files c

null 15.4k Sep 24, 2021
Sync Realm Database with CloudKit

IceCream helps you sync Realm Database with CloudKit. It works like magic! Features Realm Database Off-line First Thread Safety Reactive Programming O

Soledad 1.6k Sep 18, 2021
YapDB is a collection/key/value store with a plugin architecture. It's built atop sqlite, for Swift & objective-c developers.

YapDatabase is a collection/key/value store and so much more. It's built atop sqlite, for Swift & Objective-C developers, targeting macOS, iOS, tvOS &

Yap Studios 3.3k Sep 14, 2021
Native MongoDB driver for Swift, written in Swift

Installation | Tutorial | Basic usage | About BSON | Codable | Community | How to help A fast, pure swift MongoDB driver based on Swift NIO built for

null 617 Sep 20, 2021
Free universal database tool and SQL client

DBeaver Free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports any database which has JDBC

DBeaver 22.2k Sep 16, 2021
CoreData/Realm sweet wrapper written in Swift

What is SugarRecord? SugarRecord is a persistence wrapper designed to make working with persistence solutions like CoreData in a much easier way. Than

Modo 2.1k Aug 18, 2021
Personal db information management system.

The Information Management System This tool is so simple that most people don't understand how to use it. TL;DR This is a personal database which stor

null 39 Sep 14, 2021
Realm is a mobile database: a replacement for Core Data & SQLite

Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the iOS, macOS, tvOS & wa

Realm 14.6k Sep 16, 2021
Native cross-platform MongoDB management tool

About Robo 3T Robo 3T (formerly Robomongo *) is a shell-centric cross-platform MongoDB management tool. Unlike most other MongoDB admin UI tools, Robo

Studio 3T 8.7k Sep 23, 2021
A type-safe, Swift-language layer over SQLite3.

SQLite.swift A type-safe, Swift-language layer over SQLite3. SQLite.swift provides compile-time confidence in SQL statement syntax and intent. Feature

Stephen Celis 7.8k Sep 16, 2021
The easiest way to get started with PostgreSQL on the Mac

Postgres.app The easiest way to run PostgreSQL on your Mac Includes everything you need to get started with PostgreSQL Comes with a pretty GUI to star

Postgres.app 6k Sep 23, 2021
MySQL/MariaDB database management for macOS

Sequel Ace Sequel Ace is the "sequel" to longtime macOS tool Sequel Pro. Sequel Ace is a fast, easy-to-use Mac database management application for wor

Sequel-Ace 3.6k Sep 18, 2021
:wrench: Cross-platform GUI management tool for Redis

RDM Install & Run | Quick Start | Native Formatters | Development Guide | Known issues | Telegram Chat Open source cross-platform Desktop Manager for

Igor Malinovskiy 19k Sep 24, 2021
MySQL/MariaDB database management for macOS

Sequel Pro Sequel Pro is a fast, easy-to-use Mac database management application for working with MySQL & MariaDB databases. You can find more details

Sequel Pro 8.5k Sep 19, 2021
Unrealm is an extension on RealmCocoa, which enables Swift native types to be saved in Realm.

Unrealm enables you to easily store Swift native Classes, Structs and Enums into Realm . Stop inheriting from Object! Go for Protocol-Oriented program

Artur  Mkrtchyan 459 Sep 14, 2021
💻 Medis is a beautiful, easy-to-use Mac database management application for Redis.

Medis Medis is a beautiful, easy-to-use Redis management application built on the modern web with Electron, React, and Redux. It's powered by many awe

Zihua Li 10.4k Sep 14, 2021
Open source PostgreSQL GUI client for macOS, Linux and Windows

Postbird Postbird is a cross-platform PostgreSQL GUI client, written in JavaScript, runs with Electron Download Version 0.8.4 MacOS: Postbird-0.8.4.dm

Pavel Evstigneev 1.2k Sep 21, 2021