ここではSQLiteのバージョン管理について多くの回答があることを認識していますが、私の特定の問題の回答が見つかりませんでした。私はしばらくの間バージョン1でうまくやっていました。私はテーブルに別の列「TAG」を追加し、onUpgradeに次のコードを実装する必要がありました。AndroidのSQLite DBのバージョン2のエラー
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) db.execSQL(DATABASE_ALTER_TAG);
}
素晴らしいです。問題ありません。 TAG列は、完全なアンインストール後に再インストールするまで、予想通りの読み書きをしていました。アンインストール/再インストールの前に動作していたコードを使用して、DBが動作しなくなりました。
アンインストール/再インストール後に「古いバージョン」がヌル(<ではない)で、TAG列が追加されていないためです。私は完全にはわかりませんが。私のonUpgradeコードは問題ですか?
私のデータベースをバージョン1のTAG列に書き換えることができましたが、将来の参照のために私のコードに何が間違っているかを知りたいと思います。
EDITのQUESTION
OK、これまでの回答に感謝します。私は、アプリケーションを新しくインストールしている人のためにDBを動作させる方法を理解しています。私はまた、バージョン1からバージョン2に向かう人のためにDBを動作させる方法も理解しています。私はそれを両方のユーザー(新しくインストールされた人とアップグレードしている人)の両方で動作させる方法をまだ理解していません。
oldversionはnullにできません。これはプリミティブなデータ型です。エラーは、adbログを送信する場所です。 –
DATABASE_CREATEステートメントに新しいTAG列を追加しましたか? –
私はしませんでした。私の "DATABASE_ALTER_TAG"は列を追加します。私はなぜそれをonCreateとonUpgradeに追加する必要があるのか混乱しています。 – seekingStillness