Pregunta

Tengo un pequeño problema con OrmLite en Android.

Cuando Valor mínimo de la versión de la base de datos, el método onUpgrade se llama como se esperaba en mi OrmLite ayudante. Después de la actualización, onCreate el método se llama y me da esta excepción:

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

No tengo idea de por qué la conexión aclarado no es el mismo que el salvado.

También he puesto mis funciones de base de datos (INSERT ...) en la clase OrmLite ayudante. Tal vez esto podría ser un problema?!?

Un fragmento de mi clase de ayuda:

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

Creo que es algo simple que me falta.

Gracias de antemano por su esfuerzo.

¿Fue útil?

Solución

Ok, veo el problema y es que existe, por desgracia, en el programa de ejemplo también. En el href="http://ormlite.com/"> ORMLite clase auxiliar onUpgrade debe utilizar:

onCreate(db, connectionSource);

en lugar de la siguiente, que se llama la subclase:

onCreate(db);

He reproducido este problema en el programa de ejemplo HelloAndroid que se ha fijado. También me he fijado esto correctamente en la clase base OrmLiteSqliteOpenHelper en el lado androide del código ORMLite. Lo siento por el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top