应用程序包中的只读 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 文件。现有用户更新后会发生啥?

sqlite:只读数据库中的临时表/视图?

优化对只读sqlite数据库的快速访问?

UWP SQLite 错误:“尝试写入只读数据库” [重复]

设置包中的只读字符串