【问题标题】:Difference between SQLiteOpenHelper and SQLiteAssetHelper?SQLiteOpenHelper 和 SQLiteAssetHelper 的区别?
【发布时间】:2014-08-26 00:44:56
【问题描述】:
SQLiteOpenHelper 和SQLiteAssetHelper 有什么区别?如何使用它们?
我知道当你使用SQLiteOpenHelper 时,你必须重写onCreate() 和onUpgrade() 方法。此外,还可以添加、删除和查找数据库值。
但是,我读到SQLiteAssetHelper 更适合我的情况——因为我将拥有一个预先填充的数据库,并且我将执行比添加或删除或其他任何操作更多的查询。
所以基本上:
这两者之间的根本区别是什么?
哪一个更适合查询数据库中在编译时未知但在运行时未知的数据? (我将使用query() 或SQLiteQueryBuilder()。)
如何设置正确的?
【问题讨论】:
标签:
java
android
sqlite
android-sqlite
sqliteopenhelper
【解决方案1】:
1) 这两者的根本区别是什么?
两者都是管理和版本控制数据库文件的助手。区别仅在于架构和初始内容的设置方式以及版本迁移的完成方式。
SQLiteOpenHelper 通过调用您的onCreate() 回调设置一个新的数据库文件,并通过调用您的onUpgrade() 回调迁移旧的数据库文件。
SQLiteAssetHelper 通过从您的资产中复制一个文件来设置一个新的数据库文件,并通过从资产运行升级脚本来迁移旧的数据库文件。
2) 哪个更适合查询数据库中在编译时未知但在运行时未知的数据(将在此处使用 query() 或 SQLiteQueryBuilder())
在获取SQLiteDatabase 对象后,两者都可以很好地处理动态插入的数据和代码,例如和getWritableDatabase()是一样的。
3) 我将如何设置正确的?