【发布时间】:2013-12-22 04:46:29
【问题描述】:
我的应用程序使用ormlite 与 Sqlite 数据库进行通信。有许多屏幕从ormlite 获取数据。问题是我想在没有用户知识的情况下在后台更新数据库(它对用户是透明的)并且我的应用程序使用一些 CursorAdapters 和 Loaders 来获取数据。
行为如下所示:我的应用程序检查服务器中是否有新版本,它将从服务器下载新的 db 文件,然后通过 ormlite 帮助程序中的新服务器 db 文件从本地更改当前 db 文件。在更新进度发生时,用户可以正常更改屏幕或查看数据库中的数据(我只是使用 select 查询)
我已经搜索了一些答案,他们建议使用onUpgrade 方法,但是我该如何应用这个方法,因为我想完全更改数据库文件?以及如何在选择数据的同时切换数据库?
这是我的数据库助手:
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public DatabaseHelper(Context context){
super(context, "document.sqlite", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Category.class);
TableUtils.createTable(connectionSource, Book.class);
} catch (Exception ex) {
Ln.e(ex);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion,
int newVersion) {
try{
TableUtils.dropTable(connectionSource, Category.class, true);
TableUtils.dropTable(connectionSource, Book.class, true);
// get new one
onCreate(db, connectionSource);
}catch(Exception ex){
Ln.e(ex);
}
}
任何帮助将不胜感激!
【问题讨论】: