在Swift中为sqlite3创建实例

问题描述:

嗨我正在Swift项目中使用sqlite数据库。在Objective-C中,我们只在类文件中导入sqlite3.h,并为sqlite3创建实例,如
sqlite3 *db;
我们将其用于整个程序。

像明智一样,我怎么实现它在迅速?在Swift中为sqlite3创建实例

+0

[斯威夫特访问SQLite数据库]的可能重复(http://*.com/链接question/24102775/access-an-sqlite-database-in-swift) – Moritz

+0

在那个链接中他们没有提到如何为sqlite3创建一个实例。 –

+0

是的,他们有这个答案的第2章:http://*.com/a/28642293/2227743。无论如何,你可以使用优秀的https://github.com/stephencelis/SQLite.swift。 – Moritz

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