Вопрос

У меня небольшая проблема с 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 Базовый класс на андроидной стороне ормлитового кода. Извините за проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top