Domanda

Ho un piccolo problema con OrmLite su Android.

Quando ho incrementare la versione del database, il metodo onUpgrade viene chiamato come previsto nel mio OrmLite Helper. Dopo l'aggiornamento, il metodo viene chiamato onCreate e ottengo questa eccezione:

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

Non ho idea perché la connessione eliminato non è lo stesso di quello salvato.

Ho messo anche le mie funzioni di database (INSERT ...) nella classe OrmLite Helper. Forse questo potrebbe essere un problema?!?

Un frammento della mia classe di supporto:

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

Credo che sia qualcosa di semplice che mi manca.

Grazie in anticipo per il vostro sforzo.

È stato utile?

Soluzione

Ok, vedo il problema ed esiste, purtroppo, nel programma di esempio pure. Nel href="http://ormlite.com/"> ORMLite classe helper onUpgrade deve utilizzare:

onCreate(db, connectionSource);

al posto dei seguenti elementi chiama la sottoclasse:

onCreate(db);

Ho riprodotto questo problema nel programma di esempio HelloAndroid che è stato fissato. Ho anche risolto correttamente questo nella classe base OrmLiteSqliteOpenHelper nel lato Android del codice ORMLite. Ci scusiamo per il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top