2010-11-24 13 views
4

AndroidのOrmLiteには小さな問題があります。Android&OrmLite:OnUpgradeが失敗します

データベースのバージョンを増やすと、onUpgradeメソッドがOrmLiteヘルパーで期待通りに呼び出されます。アップグレード後、onCreateメソッドが呼び出されると、私はこの例外を取得:

11-24 10:09:45.720: ERROR/AndroidConnectionSource(390): connection saved 
    [email protected] is not the one 
    being cleared [email protected] 

私はクリア接続が保存されたものと同じではありませんなぜか見当もつかない。

私のデータベース機能(挿入...)も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); 
    } 
} 

私はそれが私が欠けている単純なものだと思います。

ご協力いただきありがとうございます。

+0

私は言いませんでした:OrmLiteのバージョン4.5 – saxos

+0

全体の例外スタックsaxosを投稿できますか?ありがとう。 – Gray

答えて

7

私は問題を抱えています。残念なことに、サンプルプログラムにも同様に存在します。 ORMLiteヘルパークラスでは、onUpgrade方法は使用する必要があります。

onCreate(db, connectionSource); 

を代わりにサブクラスを呼んでいる、以下の:

onCreate(db); 

私はされていHelloAndroidプログラム例では、この問題を再現しました一定。 ORMLiteコードのAndroid側のOrmLiteSqliteOpenHelper基底クラスでこれを正しく修正しました。問題を申し訳ありません。

+0

クール、これは私の問題を修正しました。速い応答とあなたの努力のために大変ありがとうございます。 私はあなたの仕事に本当に感謝しています。 – saxos

関連する問題