SQLiteDatabase在使用

时间:2015-09-05 02:25:52

标签: android database sqlite

当我查看教程中的示例时,我发现对于getReadableDatabase,数据库最后没有关闭,但对于getWritableDatabase,它总是在结束时关闭。这是为什么?甚至文档也指定我必须在getWritableDatabase上调用close。我已经阅读了两个文档,所以请不要简单地将文档引用给我。感谢。

3 个答案:

答案 0 :(得分:1)

尽管文档暗示,getReadableDatabase()getWritableDatabase()之间并没有真正的相关区别;打开数据库,该数据库保持打开状态,直到它为close() d。 所以这些例子不正确;他们应该以同样的方式处理这两种情况。

请注意"当您不再需要数据库"并不一定意味着您需要在每次查询后关闭它;例如,如果活动可能多次访问数据库,则在活动开始时打开它是完全有效的,并且在活动停止时关闭它。

开放数据库连接为其缓存保留一些内存,如果需要更多内存,系统会停止活动,因此在没有活动活动时应确保没有打开的数据库。

答案 1 :(得分:0)

只要有正在使用的游标包含来自它的数据,您就需要保持数据库处于打开状态。我自己很少关闭数据库,即使使用getWriteableDatabase()

答案 2 :(得分:-1)

根据android文档sqlite database 可写数据库“一旦成功打开,数据库就会被缓存,所以每次需要写入数据库时​​都可以调用此方法。(确保在不再需要数据库时调用close()。)错误权限等错误或者一个完整的磁盘可能会导致此方法失败,但如果问题得到解决,将来的尝试可能会成功。“

由于writeable在打开后会被缓存,这意味着它会占用内存。 如果数据库很大,那么巨大的内存,所以不关闭它或保持打开可能会导致成员泄漏。

希望这可以帮助你:)