Android & Ormlite: ONUPGRADE не удается
Вопрос
У меня небольшая проблема с Ormlite на Android.
Когда я увеличивающую версию базы данных, onUpgrade
Метод называется, как ожидалось, в моем помощнике Ormlite. После обновления, onCreate
Метод вызывается, и я получаю это исключение:
11-24 10:09:45.720: ERROR/AndroidConnectionSource(390): connection saved
com.j256.ormlite.android.AndroidDatabaseConnection@44f0f478 is not the one
being cleared com.j256.ormlite.android.AndroidDatabaseConnection@44f5d310
Я понятия не имею, почему очищенное соединение не совпадает с сохраненным.
Я поставил также свои функции базы данных (вставить ...) в класс помощника Ormlite. Может быть, это может быть проблемой?!?
Фрагмент от моего помощника класса:
public class OrmLiteDBProvider extends OrmLiteSqliteOpenHelper
implements IEntityProvider, IDBProvider {
//snip
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
Log.i(OrmLiteDBProvider.class.getName(), "Creating database and tables");
TableUtils.createTable(connectionSource, OrgManaged.class);
} catch (SQLException e) {
Log.e(OrmLiteDBProvider.class.getName(),
"Can't create database and tables", e);
throw new RuntimeException(e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource,
int oldVersion, int newVersion) {
try {
Log.i(OrmLiteDBProvider.class.getName(),
"Database version changed. Dropping database.");
TableUtils.dropTable(connectionSource, OrgManaged.class, true);
// after we drop the old databases, we create the new ones
onCreate(db);
} catch (SQLException e) {
Log.e(OrmLiteDBProvider.class.getName(), "Can't drop databases", e);
throw new RuntimeException(e);
}
}
Я думаю, что это что-то простое, что мне не хватает.
Спасибо заранее за ваши усилия.
Решение
Хорошо, я вижу проблему, и она существует, к сожалению, в образце программы также. в Ormlite. Класс помощника, onUpgrade
Метод должен использовать:
onCreate(db, connectionSource);
Вместо следующего, которое вызывает подкласс:
onCreate(db);
Я воспроизвел эту проблему в HelloAndroid
Пример программы, которая была исправлена. Я также исправил это правильно в OrmLiteSqliteOpenHelper
Базовый класс на андроидной стороне ормлитового кода. Извините за проблему.