如何在 ios 中打开一个 sqlite 文件进行阅读而不复制到文档?
Posted
技术标签:
【中文标题】如何在 ios 中打开一个 sqlite 文件进行阅读而不复制到文档?【英文标题】:how can I open a sqlite file in ios for reading without copying to documents? 【发布时间】:2012-12-23 07:42:30 【问题描述】:我正在开发一个应用程序,它使用来自 sqlite 数据库的静态数据来执行各种操作,虽然我只需要对数据库的只读访问权限,具体取决于他们从我想要的第一个屏幕中选择的情节使用不同的数据库文件,我希望可用剧集的列表可以即时更新。我得到了更新可用剧集列表的帮助,并将正确的内容下载并存储在单独的文件夹中,所以我知道我可以在选择剧集时删除文档文件夹中的 sql 文件并每次复制新的这对于我正在尝试做的事情来说已经足够好了。但是检查文件、删除文件、复制新文件似乎有点额外的工作。然后每次用户想要选择不同的剧集时从那里打开它。而且我不想把所有的 sql 文件放在一起,因为这会比第一种方法更麻烦,特别是如果这个应用程序停留的时间足够长,可以有很长的剧集列表。
所以我的问题是:我是否可以至少获得对已下载的 sql 文件(或用于测试的捆绑包中的一个)的只读访问权限,而不必先将其复制到文档中?如果是这样,我将如何打开文件?
【问题讨论】:
【参考方案1】:我能否至少获得对已下载的 SQL 文件(或用于测试的捆绑包中的一个)的只读访问权限,而无需先将其复制到文档目录?
是的。 app bundle 中的文件是可读的(如果不可读,那么在 bundle 中存储文件就没有意义了)。
如果是这样,我将如何打开文件?
不清楚你在这里问什么 - 如果你想对文件执行 SQL 查询,你应该使用 ios 上可用的 sqlite3
库。
【讨论】:
即使您设法从包中打开 Sqlite3 数据库:Sqlite 可能需要的日志文件和其他临时文件呢?将它们放在可写文件夹中是否足够聪明,还是会崩溃? @Krumelur 这是一个实现细节。如果您以只读方式打开文件,则实现必须假定它是只读的(正是为此目的)。您从未见过内置本地静态数据库的应用程序吗? 我从未在 ios 上看到过此类应用的代码。我在想这应该是可能的,但是我能找到的所有关于 iOS 的 SQL 教程都是从从头开始创建数据库或在对它进行任何操作之前将文件从包中复制到文档中开始的,所以我不确定.我想对它运行sql查询,我根本不需要修改数据库。 @KitRamos 是的,这是可能的,不要害怕。以上是关于如何在 ios 中打开一个 sqlite 文件进行阅读而不复制到文档?的主要内容,如果未能解决你的问题,请参考以下文章
如何将预先存在的 sqlite 文件导入核心数据 iOS 7.1
如何在 iOS 中以编程方式将 sqlite 文件保存在本地文件夹或 nsbundle 中?