不确定我是否应该以及如何关闭 SQLite.swift 中的连接。它会导致线程/内存泄漏吗?
问问题
2824 次
3 回答
1
通常,当Connection
变量超出其使用范围并由垃圾收集系统(在deinit
函数中)回收时,数据库将关闭。但有时它是您的类的属性之一,因此您可能希望在某些函数的中间手动关闭它。因此,此代码有效:
sqlite3_close(db.handle)
wheredb
的类型为Connection
. 然后您可以覆盖数据库文件或删除它,不会引发任何警告。无论如何,我强烈建议您以谨慎的方式设计代码,让系统释放句柄。
于 2021-06-23T21:03:10.580 回答
0
如果您不手动操作,Sqlite 连接将自动关闭。
例如:
try {
conn.close();
}
catch (Exception ex) {
System.out.println ("Error");
return false;
}
于 2015-11-27T06:57:29.967 回答
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() 文档。
于 2020-04-30T03:43:28.193 回答