gpt4 book ai didi

swift - 使用 Swift 从 bundle 中打开 SQLite

转载 作者:行者123 更新时间:2023-11-30 11:25:07 24 4
gpt4 key购买 nike

我的应用程序包中有一个 .sqlite 文件。我似乎打开了文件,但无法访问文件中的表。

let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("test.sqlite")

//opening the database
if sqlite3_open(fileURL.path, &db) == SQLITE_OK {
print("opening database")
}
let queryString = "SELECT * FROM Table1"

var stmt:OpaquePointer?

//preparing the query
if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}

这会给出以下错误消息:“准备插入时出错:没有这样的表:Table1”

据我所知,数据库已找到并打开,但无法访问。正如我从 Stackoverflow 上的其他帖子中看到的,这应该可行

编辑:我现在发现,如果我将数据库名称从 test.sqlite 拼错为 ttestt.sqlite,我仍然会遇到相同的错误。意思是没有找到数据库。这条线有什么问题?

 let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("test.sqlite")

最佳答案

解决方案是将数据库从 bundle 复制到文档目录:

 let bundleURL = Bundle.main.url(forResource: "test", withExtension: "sqlite")!
try manager.copyItem(at: bundleURL, to: documentsURL)
rc = sqlite3_open_v2(documentsURL.path, &db, SQLITE_OPEN_READWRITE, nil)

关于swift - 使用 Swift 从 bundle 中打开 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50821789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com