应用程序包中的只读 SQLite 数据库
Posted
技术标签:
【中文标题】应用程序包中的只读 SQLite 数据库【英文标题】:Read-only SQLite database in application bundle 【发布时间】:2016-03-27 01:49:05 【问题描述】:假设我已经将一个大型内部参考数据 SQLite 数据库与我的 ios 应用程序捆绑在一起。它永远不会在运行时被写入,并且只会随着新的应用发布而改变。
通常,预先生成的 SQLite 数据库文件会在使用前复制到应用程序的库或用户文档目录中,以允许读取访问。但由于在这种情况下不需要:将文件保存在应用程序包中并从那里使用它是否有任何危害、潜在的性能问题或其他问题?
换句话说:
let myBundledDatabase = NSBundle.mainBundle().pathForResource("MyDatabase", ofType: "db")!
sqlite3_open(myBundledDatabase, // ...
【问题讨论】:
【参考方案1】:这应该可以正常工作。打开文件时指定 SQLITE_OPEN_READONLY 标志并使用sqlite3_open_v2(...)
。
【讨论】:
以上是关于应用程序包中的只读 SQLite 数据库的主要内容,如果未能解决你的问题,请参考以下文章
Sqlite3 数据库在 Docker 容器中保持只读且不可创建。如何让它可写?
应用程序包中预填充的 sqlite 文件。现有用户更新后会发生啥?