Question

J'ai un petit problème avec OrmLite sur Android.

Quand j'incrémenter la version de base de données, la méthode est appelée onUpgrade comme prévu dans mon OrmLite Helper. Après la mise à niveau, la méthode onCreate est appelée et je reçois cette exception:

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

Je n'ai aucune idée pourquoi la connexion est effacée pas le même que celui enregistré.

J'ai mis aussi mes fonctions de base de données (insérer ...) dans la classe OrmLite Helper. Peut-être que cela pourrait être un problème?!?

Un extrait de ma classe d'aide:

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

Je pense que simple de quelque chose que je suis absent.

Merci d'avance pour vos efforts.

Était-ce utile?

La solution

Ok, je vois le problème et il existe, malheureusement, dans le programme d'échantillonnage ainsi. Dans l'assistant ORMLite classe, la méthode onUpgrade doit utiliser:

onCreate(db, connectionSource);

au lieu des éléments suivants qui appelle la sous-classe:

onCreate(db);

J'ai reproduit ce problème dans le programme d'exemple HelloAndroid qui a été fixé. J'ai aussi fixé cela correctement dans la classe de base OrmLiteSqliteOpenHelper dans le côté Android du code ORMLite. Désolé pour le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top