Android y OrmLite: ONUPGRADE falla
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.
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.