【发布时间】:2016-03-02 12:51:38
【问题描述】:
我想编写一个具有 SQLite 数据库的 Android 应用程序。
我见过this question,但它(以及答案)已有 7 年历史,CommonsWare 在a comment 中也指出了这一点,他们还建议使用this 库。但评论也是从 2013 年开始的。库中的最后一次提交也是在 2014 年 12 月。
另一方面,在this official guide 中,他们说创建SQLite 数据库的推荐方法是继承SQLiteOpenHelper,由此可以推断Google 现在推荐使用原生Android API 来创建并使用数据库。
所以我的问题是我应该遵循什么方式?也就是说,截至 2016 年,在 Android 应用程序中创建、使用和发布 SQLite 数据库的推荐方法是什么?
【问题讨论】:
-
死简单的方法怎么样 - 将数据库从资产复制到文件系统,然后使用普通的 SQLite 类来读/写它。这不是很明显的做事方式,而不是下载一些第三方库,天知道修复到什么状态?
-
@GabeSechan:因为那个库很好(我经常使用它),而且它比我通常看到人们用来从资产中解压数据库的流口水白痴级代码要好得多.如果您有更好的代码,请将其发布在某处,或发布您自己的库来解决问题。
-
@CommonsWare 我宁愿拥有自己编写的流口水的白痴级代码,也不愿为这种微不足道的事情使用第 3 方库。如果这是一项更复杂的任务,我可能会使用库,但当我阅读并理解库代码时,我可能已经自己编写了两次。
-
重新发明轮子并不总是一件坏事。将一个应用程序拼凑成数百个库来执行您无法调试的琐碎任务,因为您不了解它们并且谁知道它们的质量是一种更糟糕的反模式。当复杂性太高以至于您无法在没有大量时间的情况下理解时(例如用于计算机视觉的 OpenCV),或者当您可以理解它但复制它的努力远大于阅读和理解代码并调试它的努力时,请使用库在将来。这不会成为任何一个酒吧。
-
@CommonsWare 取决于库。当您谈论一个经常使用的大型库时,您可能是对的。如果你说的是 git hub 上的随机库,我实际上假设相反——我比作者更好,而且我更有可能找到边缘案例,而且我可以根据我的用例定制它。经验证明我是对的。除非一项任务需要我几天时间,否则我会自己做。此外,查找和评估库是一项不平凡的任务。您确实在使用之前阅读了该库的代码,以确保它不是恶意软件并且没有明显的缺陷,对吧?
标签: android sqlite android-sqlite android-database