我知道如何将FMDB用于基本功能,例如创建数据库表等。

当我想更新我的表时,例如添加新列,我需要更新用户版本号。

FMDB具有userVersion属性,应为sqlite的user_version。我用下面的代码:

if let db = DBManager.shared.database, db.userVersion == 0, db.open() {
     addColumnsToSomeTable()
     db.userVersion = 1
}


但是运行项目,userVersion仍为0。应为1,如果不应该输入块,则为1。

为什么userVersion无法升级?

我也尝试过:

let string = "PRAGMA user_version = 1"
do {
  try db.executeUpdate(string, values: nil)
} catch {
}


还是一样的问题。

我搜索了一些教程,其中大多数都有fileExists检查,如下所示:

if !FileManager.default.fileExists(atPath: dbPath) {
        database = FMDatabase(path: dbPath)
    }


这是什么意思?如果文件存在,获取文件的正确方法是什么?
 与database = FMDatabase(path: dbPath)不同吗?

最佳答案

我同时打开了sqlite软件DB Browser for SQLite。关闭它,然后正常工作。

09-17 18:49