Frage

Ich habe ein kleines Problem mit OrmLite auf Android.

Wenn ich die Datenbankversion erhöhen, wird die onUpgrade Methode wie in meinem OrmLite Helper erwartet genannt. Nach dem Upgrade wird die onCreate Methode aufgerufen und ich erhalte diese Ausnahme:

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

Ich habe keine Ahnung, warum die gelöscht Verbindung nicht die gleiche wie die gespeichert ist.

Ich habe auch Funktionen der Datenbank setzen (insert ...) in die OrmLite Helper-Klasse. Vielleicht könnte dies ein Problem sein?!?

Ein Ausschnitt aus meiner Hilfsklasse:

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);
    }
}

Ich denke, es ist etwas einfach fehlt mir.

Vielen Dank im voraus für Ihre Mühe.

War es hilfreich?

Lösung

Ok, ich sehe das Problem, und es existiert leider im Beispielprogramm als auch. In der ORMLite Helper-Klasse sollte die onUpgrade Methode verwenden:

onCreate(db, connectionSource);

anstelle der folgenden, die die Unterklasse ruft:

onCreate(db);

Ich habe reproduziert dieses Problem in dem HelloAndroid Beispielprogramm, der behoben wurde. Ich habe auch richtig dies in der OrmLiteSqliteOpenHelper Basisklasse in der Android Seite des ORMLite Code festgelegt. Sorry für das Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top