Ios Swift 5 SQLite发行版;“无法打开数据库”;突然

Ios Swift 5 SQLite发行版;“无法打开数据库”;突然,ios,swift,sqlite,Ios,Swift,Sqlite,我正在使用Xcode开发一个iOS应用程序,SQLite用于存储数据 有一个与SQLite相关的问题,当应用程序将数千条记录插入数据库时,“无法打开数据库”/“无法打开文件”是一个例外 我的应用程序的一个功能是下载一个JSON,其中包含大约1440条记录(一条记录是带有时间戳的数字,例如{timestamp:'00:12',value:'29'}),然后将这些记录插入SQLite。我注意到,如果我尝试下载大约3~4条JSON,就会出现异常,应用程序将崩溃 SQLite有任何限制吗 有插入数据的代

我正在使用Xcode开发一个iOS应用程序,SQLite用于存储数据

有一个与SQLite相关的问题,当应用程序将数千条记录插入数据库时,“无法打开数据库”/“无法打开文件”是一个例外

我的应用程序的一个功能是下载一个JSON,其中包含大约1440条记录(一条记录是带有时间戳的数字,例如{timestamp:'00:12',value:'29'}),然后将这些记录插入SQLite。我注意到,如果我尝试下载大约3~4条JSON,就会出现异常,应用程序将崩溃

SQLite有任何限制吗

有插入数据的代码:

//INSERT Statement
func insert(_ tableName :String, rowInfo :[String:String]) -> Bool {
    var statement :OpaquePointer? = nil
    let sql = "insert into \(tableName) " + "(\(rowInfo.keys.joined(separator: ","))) " + "values (\(rowInfo.values.joined(separator: ",")))"
    if sqlite3_prepare_v2(self.db, sql.cString(using: String.Encoding.utf8), -1, &statement, nil) == SQLITE_OK {
        if sqlite3_step(statement) == SQLITE_DONE {
            return true
        }
        sqlite3_finalize(statement)
    }
    return false
}

执行操作时必须打开数据库,完成数据库连接后,必须负责关闭数据库

尝试添加

sqlite3_open(db)
在函数开始时调用

并在执行操作后(此处为返回函数之前)关闭数据库,方法如下:


如果无法打开数据库,则应共享打开的例程(包括有关如何构建数据库路径的信息等)。我们不需要查看
插入
代码,直到我们找出数据库打开失败的原因。我想知道您是否在应用程序沙盒之外有一些硬编码路径。不相关(在解决数据库打开问题之前,不要担心这一点),您在构建包含值的SQL语句时应该小心。通常,我们在SQL语句中使用
占位符,然后使用方法将值绑定到这些占位符。现在,我猜您只是在SQL语句中插入数值,在这种情况下,您可以不使用上述代码,但在一般来说,这将被视为一种需要避免的反模式。
sqlite3_close(db)