使用可读SQLite数据库的原因

时间:2010-12-29 23:28:35

标签: android sqlite

Android类SQLiteOpenHelper有一个返回可读数据库以及可读写数据库的方法。目前我只使用可写数据库并且没有问题,但我想知道如果我只是在异步任务(或活动)中读取,那么改为使用可读性会带来什么好处。

可能会有性能优势,但我没有看到任何实际数字的参考。此外,如果我继续在可读和可写之间切换,那么更改的开销可能会带来所有性能优势。

有人有任何实际数字或经验吗?是否值得实施单独访问?

2 个答案:

答案 0 :(得分:6)

好问题。没有数字来自我。最近的解释(来自SQLLiteOpenHandler javadoc)

  

“此(getReadableDatabase)将是getWritableDatabase()返回的同一对象,除非某些问题(例如完整磁盘)要求以只读方式打开数据库。在这种情况下,只读数据库对象将是如果问题得到解决,将来可能会调用getWritableDatabase(),在这种情况下,将关闭只读数据库对象,并在将来返回读/写对象。“

答案 1 :(得分:5)

我无法对性能优势发表评论,但我总是尝试着对“良好实践”(或“最佳实践”)的原则,以便访问任何“数据”来源(文本文件,数据库或其他)

一般地看待事物(不是特定于Android),在决定访问级别时要做出的决定,归结为要执行的操作以及任何外部影响。

我能想到的两个例子......

  1. 如果外部流程可能有 维护数据的责任 - 在这种情况下它可能已经'打开' 这样的数据源 它会阻止所有“读取”访问 维护阶段的任何其他过程。在这种情况下, 如果您的代码将被拒绝访问 您何时请求读/写访问权限 没有必要。
  2. 危害数据完整性的风险 - 来自外部世界的系统攻击可以通过使用内部代码的安全漏洞实现,内部代码只有在需要“读取”访问权限时才能对数据进行读/写访问。
  3. 好的,这些点可能与Android有关,也可能没有(特别是如果您的数据源特定于您的应用),但正如我所说,我试图一般地看待事物并使用“最佳实践”方法。如果我不需要“写入”访问权限,我不会要求它。