带Swift的sqlite3:特定路径不工作
我一直试图为我的SQLite数据库设置一个特定的路径,但它不起作用,无论是相对的还是绝对的,除了“file:myDB” 知道为什么吗带Swift的sqlite3:特定路径不工作,swift,sqlite,Swift,Sqlite,我一直试图为我的SQLite数据库设置一个特定的路径,但它不起作用,无论是相对的还是绝对的,除了“file:myDB” 知道为什么吗 func openDatabase() -> OpaquePointer? { var db: OpaquePointer? let path = "file:///Users/me/Desktop/myDB.db" if sqlite3_open_v2(path, &db, SQLITE_OPEN_URI | SQLITE_O
func openDatabase() -> OpaquePointer? {
var db: OpaquePointer?
let path = "file:///Users/me/Desktop/myDB.db"
if sqlite3_open_v2(path, &db, SQLITE_OPEN_URI | SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil) == SQLITE_OK {
print("successfully opened connection to database at \(path)")
return db
}
else {
print("Unable to open database.")
sqlite3_close(db)
}
}
let db = openDatabase()
并非所有版本的SQLite都使用URI支持编译。您可能需要检查这一点,并捕获
sqlite3\u open()
的返回代码,以查看它是否提供了更多信息。此外,应用程序现在已沙盒化,因此您不能只在任何地方打开文件。如果它不在沙箱中,则必须向用户请求权限。问题是您是否真的需要在非沙盒文件夹中创建数据库,或者您是否同样乐意在“application support”目录中创建数据库,例如,这不需要用户批准。您可能还需要调用sqlite3\u errmsg
以在else
子句中获取有意义的错误消息。谢谢。我忘了沙箱的事了。。。在此字段中已停用太久。我会查的!