Android&ormlite:onupgradeは失敗します
質問
AndroidのOrmliteに小さな問題があります。
データベースバージョンをインクリメントすると、 onUpgrade
メソッドは、Ormliteヘルパーで予想どおりに呼び出されます。アップグレード後、 onCreate
メソッドが呼び出され、この例外が得られます。
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
クリアされた接続が保存された接続と同じではない理由はわかりません。
また、データベース関数(挿入...)をOrmliteヘルパークラスに入れました。多分これは問題になる可能性がありますか?!?
私のヘルパークラスからのスニペット:
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);
}
}
私が足りないのは簡単だと思います。
よろしくお願いします。
解決
OK、私は問題を見て、残念ながらサンプルプログラムにも存在します。の中に ormlite ヘルパークラス、 onUpgrade
メソッドを使用する必要があります:
onCreate(db, connectionSource);
サブクラスを呼び出す以下の代わりに:
onCreate(db);
この問題を再現しました HelloAndroid
修正された例プログラム。また、これを適切に修正しました OrmLiteSqliteOpenHelper
OrmliteコードのAndroid側のベースクラス。問題は申し訳ありません。
所属していません StackOverflow