我想通过assets文件夹中的大数据库发送我的应用程序。 Android SQLiteAssetHelper似乎是解决这个问题的方法。
但是,该应用程序也使用ormlite,并且它有许多映射到数据库表的Java对象。如何让ormlite使用预先填充的数据库?
答案 0 :(得分:0)
我已经创建了自己的SqliteOpenHelper,它扩展了OrmLiteSqliteOpenHelper,然后在里面我复制了SQLiteAssetHelper中的代码。
答案 1 :(得分:0)
你可以摆脱SQLiteAssetHelper并实现这个DatabaseInitializer class,它将你的数据库(如果它不存在)复制到data/data/yourapp/databases/yourdb.db
(ormlite生成你的数据库的文件夹)
在DatabaseHelper构造函数中:
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
DatabaseInitializer initializer = new DatabaseInitializer(context);
try {
initializer.createDatabase();
initializer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
清洁&简单的解决方案
一些小缺点:
- 仅适用于Android 2.2.3+
- 小心尺寸(3mb没遇到任何问题)