我可以将.db文件复制到项目的根目录,然后插入或删除它的数据吗?

时间:2017-01-19 09:32:26

标签: ios swift sqlite

我知道我们不能将plist或其他缓存文件放在项目的根目录中。

但如果是.db文件,是否可以放入我们项目的根目录,让我们在table文件中插入或删除db

因为我看到一个演示它放在根目录中,它工作正常,但我在我的项目中使用它,无法向其插入数据。

我调用它的方法返回4,有时候是2

// Private method which handles the actual execution of an SQL statement
private func execute(stmt:OpaquePointer, sql:String)->CInt {
    // Step
    var result = sqlite3_step(stmt)
    if result != SQLITE_OK && result != SQLITE_DONE {
        sqlite3_finalize(stmt)
        if let error = String(validatingUTF8:sqlite3_errmsg(self.db)) {
            let msg = "SQLiteDB - failed to execute SQL: \(sql), Error: \(error)"
            NSLog(msg)
        }
        return 0
    }
    // Is this an insert
    let upp = sql.uppercased()
    if upp.hasPrefix("INSERT ") {
        // Known limitations: http://www.sqlite.org/c3ref/last_insert_rowid.html
        let rid = sqlite3_last_insert_rowid(self.db)
        result = CInt(rid)
    } else if upp.hasPrefix("DELETE") || upp.hasPrefix("UPDATE") {
        var cnt = sqlite3_changes(self.db)
        if cnt == 0 {
            cnt += 1
        }
        result = CInt(cnt)
    } else {
        result = 1
    }
    // Finalize
    sqlite3_finalize(stmt)
    return result
}

但我使用SQLPro for SQLite工具查看表格(我使用此工具创建),表格未插入任何记录。

enter image description here

那么,如果我们可以将db文件放在根目录中,让我们在db文件中插入或删除数据?

1 个答案:

答案 0 :(得分:0)

只有当它位于文档目录中时,您才可以插入,更新或删除行(从而修改您的db文件)

请参阅this other answer以了解如何在应用启动时移动.db文件