使用可读SQLite数据库的原因

Man*_*ser 6 sqlite android

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

可能有性能优势,但我没有看到任何实际数字的参考.此外,如果我在可读和可写之间切换,则更改会产生一些开销,可能会带来所有性能优势.

有没有人有这方面的实际数字或经验?是否值得实施单独访问?

GSr*_*ree 6

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

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


Squ*_*onk 5

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

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

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

  1. 如果外部进程可能负责维护数据 - 在这种情况下,它可能已经"打开"了数据源,使得它在维护阶段阻止任何其他进程的"读取"访问.在这种情况下,如果您在不需要时请求读/写访问权限,则将拒绝您的代码访问.
  2. 危害数据完整性的风险 - 来自外部世界的系统攻击可以通过使用内部代码的安全漏洞来实现,该内部代码在真正只需要"读取"访问权限时具有对数据的读/写访问权限.

好的,这些点可能与Android有关,也可能没有(特别是如果您的数据源特定于您的应用),但正如我所说,我试图一般地看待事物并使用"最佳实践"方法.如果我不需要"写入"访问权限,我不会要求它.