3

Android アプリケーションの SQLIte データベースで問題が発生しています。問題は、エミュレーターや Eclipse を複数回再起動したり、DDMS から削除したりしても、データベースが更新されないことです。

これは、SQLiteOpenHelper を拡張するクラスにある私の onCreate メソッドです。

public void onCreate(SQLiteDatabase database) {
    try {
        database.execSQL(ESSENCE_TABLE_CREATE);
        database.execSQL(PACCO_TABLE_CREATE);
        database.execSQL(TAVOLE_TABLE_CREATE);
        database.rawQuery("insert into essenza values(1, 'Rovere')",
                null); // added later
    } catch (SQLException e) {
        Log.e("DB", e.getMessage());
    }
}

ヘルパーをインスタンス化した後、データベースへの参照をリクエストします。

    helper = new DBHelper(context, dbpath + "/" + DATABASE_NAME);
    database = helper.getWritableDatabase();

(後で追加された) rawQuery ステートメントは実行されず、代わりに使用中のデータベースが以前のバージョンからキャッシュされているようです。データベースのバージョンも変更しようとしましたが、うまくいきませんでした。何か不足していますか?前もって感謝します。

4

1 に答える 1

6

次の 2 つのオプションがあります。

  1. DDM を使用して、デバイスからデータベース ファイルを削除します (/data/data/ を調べます)。これにより、Android は onCreate を再度実行するようになります。
  2. コンストラクターで、SQLiteOpenHelper に渡すデータベース バージョンをインクリメントします。生のクエリを onUpgrade に追加します。

おそらくオプション 1 が必要です。データベースを更新したいアプリのユーザーがいる場合は、オプション 2 の方が適しています。

于 2011-08-31T17:33:08.977 に答える