多次还是一次打开sqlite数据库?

时间:2019-06-06 21:07:28

标签: ios swift sqlite

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

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

b)打开一次并将其作为整个应用程序的实例? -如何做到?

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

我可以从经验丰富的敏捷开发人员那里得到一些澄清吗?

我有本教程中的代码,但已在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")
       }

1 个答案:

答案 0 :(得分:0)

任何视图控制器中都不应包含SQLite代码。您应该编写一个类,该类封装所有对数据库的数据读写。然后您的其他类(例如视图控制器)根据需要请求并将数据提交到该类。

换句话说,一个数据库类代表您的数据及其持久性。无需其他代码即可知道您甚至在使用SQLite。

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