gpt4 book ai didi

ios - 多次打开sqlite数据库还是单次打开sqlite数据库?

转载 作者:行者123 更新时间:2023-11-29 05:41:45 25 4
gpt4 key购买 nike

我是 Swift 新手,正在学习使用 SQlite,我想知道在哪里打开数据库?

a) 在我需要使用的每个 ViewController 上多次

b) 打开一次并将其保留为整个应用程序的实例?-怎么做?

理论上,方案a意味着我每次要使用数据库时都会将其加载到内存中。也许我错了,但这很丑。

我可以从经验丰富的 swift 开发人员那里得到一些说明吗?

我在教程中有这样的代码,但它在 ViewController 上使用


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

//opening the database
if sqlite3_open(fileURL.path, &db) != SQLITE_OK {
print("error opening database")
}

最佳答案

任何 View Controller 中都不应包含 SQLite 代码。您应该编写一个类来封装所有从数据库读取和向数据库写入数据的操作。然后您的其他类(例如 View Controller )根据需要请求数据并将其提交给该类。

换句话说,单个数据库类代表您的数据及其持久性。其他代码不需要知道您正在使用 SQLite。

对于您最初的问题,在应用程序的生命周期内保持单个数据库连接打开没有任何问题。我就是做这个的。并且将所有内容集中在一个类中使事情变得简单。数据库并不只是因为它是打开的而“位于内存中”。但这实际上取决于您的数据库访问量。在我的应用程序中,每个屏幕和每次点击都会导致数据库访问。所以我有一个开放的连接并充分利用准备好的语句。但如果您只是偶尔访问数据库,那么每次打开、查询和关闭都不会出现问题。打开数据库时我也有很多开销。我安装了很多自定义功能和其他设置。对每个查询都这样做会很痛苦。

关于ios - 多次打开sqlite数据库还是单次打开sqlite数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56485096/

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