0

Hi I'm working in a Swift project and using sqlite database in it. In Objective-C, we just import sqlite3.h in class file and create a instance for sqlite3 like
sqlite3 *db;
and we use it through out the program.

Like wise how do I achieve it in swift ??

4

1 Answer 1

0

From https://github.com/ryanfowler/SwiftData/blob/master/SwiftData.swift

private class SQLiteDB {

    class var sharedInstance: SQLiteDB {
        struct Singleton {
            static let instance = SQLiteDB()
        }
        return Singleton.instance
    }

    var sqliteDB: COpaquePointer = nil
    var dbPath = SQLiteDB.createPath()
    var inTransaction = false
    var isConnected = false
    var openWithFlags = false
    var savepointsOpen = 0
    let queue = dispatch_queue_create("SwiftData.DatabaseQueue", DISPATCH_QUEUE_SERIAL)


    // MARK: - Database Handling Functions

    //open a connection to the sqlite3 database
    func open() -> Int? {

        if inTransaction || openWithFlags || savepointsOpen > 0 {
            return nil
        }
        if sqliteDB != nil || isConnected {
            return nil
        }
        let status = sqlite3_open(dbPath.cStringUsingEncoding(NSUTF8StringEncoding)!, &sqliteDB)
        if status != SQLITE_OK {
            println("SwiftData Error -> During: Opening Database")
            println("                -> Code: \(status) - " + SDError.errorMessageFromCode(Int(status)))
            if let errMsg = String.fromCString(sqlite3_errmsg(SQLiteDB.sharedInstance.sqliteDB)) {
                println("                -> Details: \(errMsg)")
            }
            return Int(status)
        }
        isConnected = true
        return nil

    }
}

Don't forget to link your target against libsqlite3.dylib

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.