在Android中使用外部数据库

时间:2014-01-30 17:17:39

标签: android sqlite

使用外部数据库文件(来自资产)和使用SQLiteOpenHelper创建新数据库有什么区别?性能明智哪一个会快?将从资产访问数据库会减慢我的应用程序。

3 个答案:

答案 0 :(得分:4)

  

使用外部数据库文件(来自资产)和使用SQLiteOpenHelper创建新数据库有什么区别?

您无法直接将预先打包在应用中的数据库用作资产。 SQLite需要一个文件;资产不是文件,而是构成APK的ZIP文件中的条目。

使用something like SQLiteAssetHelper,您可以将预打包的数据库作为用户的起点,方法是将数据库从资产复制到应用程序的内部存储中。

  

将从资产访问数据库会减慢我的应用程序。

这取决于您与之比较的内容,即使这样,差异也只是您第一次尝试使用数据库时。

使用数据库打包作为资产方法,数据库需要先从资产中复制才能使用。这需要时间。它不应该比创建一个空数据库和执行SQL语句来填充它快得多。事实上,在许多情况下,我希望它会更快。但是,它比从 empty 数据库开始要慢。

创建和设置数据库后 - 无论是通过您自己的CREATE TABLE语句还是通过从资产复制启动数据库 - 性能都是相同的,因为数据库本身是相同的。

答案 1 :(得分:2)

assets文件夹是只读的,因此如果您需要编辑数据库,那么它对yourapp不起作用。如果您有预先填充的数据库,则可以选择将assets文件夹中的副本复制到首次访问应用程序时可写入的位置,然后继续使用可写入的版本。

答案 2 :(得分:0)

假设您的数据库配置正确,则没有性能差异。见:

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

我正在使用这个程序用于~500mb的数据库,我必须经常进行相当复杂和实质性的查询,并且由于大小的原因我在第一次运行时压缩分发和解压缩,这样可以完美地工作。