2015-05-29 52 views
0

嗨我正在Swift項目中使用sqlite數據庫。在Objective-C中,我們只在類文件中導入sqlite3.h,併爲sqlite3創建實例,如
sqlite3 *db;
我們將其用於整個程序。

像明智一樣,我怎麼實現它在迅速?在Swift中爲sqlite3創建實例

+0

[斯威夫特訪問SQLite數據庫]的可能重複(http://stackoverflow.com/鏈接question/24102775/access-an-sqlite-database-in-swift) – Moritz

+0

在那個鏈接中他們沒有提到如何爲sqlite3創建一個實例。 –

+0

是的,他們有這個答案的第2章:http://stackoverflow.com/a/28642293/2227743。無論如何,你可以使用優秀的https://github.com/stephencelis/SQLite.swift。 – Moritz

回答

0

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 

    } 
} 

不要忘記你的目標對libsqlite3.dylib