1 回答
TA贡献1851条经验 获得超5个赞
有没有办法导出可写数据库?
从您的代码中,假设它正在运行,那么这就是您正在做的事情。还假设您要确保该数据库未在其他地方使用并且已关闭。
也就是说,SQLite 数据库是单个文件,复制该文件,然后您可以在拥有 SQLite 的任何地方使用该数据库。可写/可读的概念(即getWritableDatabase
v getReadableDatabase
)是更常见的误解之一。后者在大多数情况下会得到一个可写的数据库,如果数据库也不能写,例如(完整的磁盘),它只会返回一个只读的数据库。按照 :-
创建和/或打开数据库。这将与 getWritableDatabase() 返回的对象相同,除非某些问题(例如磁盘已满)要求以只读方式打开数据库。在这种情况下,将返回只读数据库对象。如果问题得到解决,未来对 getWritableDatabase() 的调用可能会成功,在这种情况下,只读数据库对象将被关闭,读/写对象将在未来返回。
例外/注意事项是:-
如果数据库已加密,在这种情况下,您将使用加密代码/扩展名和密钥。
如果您使用内存/临时表,在这种情况下并且如果您需要这些内存/临时表,您可以创建一个副本数据库但将内存/临时表更改为永久。
SQLite 确实有一个备份 API,它可以做到这一点。但是,我不相信 Android 中的 SQLite API 实现了备份 API(因此尝试使用它可能比实现复制方法更痛苦)。
在 Android 上,数据库中会有一个名为android_metadata的附加表,它只存储区域设置,可以在其他地方忽略。
添加回答
举报