我是否需要"关闭" SQLite.swift中的连接?

时间:2015-11-27 06:55:45

标签: sqlite.swift

不确定我是否应该以及如何在SQLite.swift中关闭Connection。它会导致线程/内存泄漏吗?

3 个答案:

答案 0 :(得分:0)

如果您不手动执行,Sqlite连接将自动关闭。

例如:

    try { 
        conn.close();
    } 
    catch (Exception ex) {
        System.out.println ("Error");
        return false;
    }

答案 1 :(得分:0)

  • 尽管SQLite会自动关闭连接。为了避免线程悬空带来的潜在竞争状况。为了完整性,我将其添加到通用Swift查询函数的末尾。
if sqlite3_close(db) != SQLITE_OK {
    print("error closing database")
}

哪里

var db: OpaquePointer?
var databaseFullPath: String = "" /// Location database.

if sqlite3_open(databaseFullPath, &db) != SQLITE_OK {
    print("error opening database")
}

其他信息: sqlite3_close() documentation

答案 2 :(得分:0)

通常,当 Connection 变量超出其使用范围并被垃圾收集系统(在 deinit 函数中)回收时,数据库会关闭。但有时它是您的类的属性之一,因此您可能希望在某些功能中间手动关闭它。因此这段代码有效:

sqlite3_close(db.handle)

其中 db 的类型为 Connection。然后您可以覆盖数据库文件或删除它,不会引发警告。 无论如何,我强烈建议您以谨慎的方式设计代码,让系统释放句柄。