私のアプリケーションのSQLite DBにテーブルを追加しています。すべての私の構文は問題ではなく、問題ありません。しかし、新しいテーブルを適切に作成するのにはいくつか問題があります。新しいテーブルを追加しました....SQLiteデータベースを更新し、既存のデータをすべて失うことはありませんか?
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
db.execSQL(CREATE_REQUESTS);
db.execSQL(CREATE_OVERRIDE);
}
My on createメソッド。私は3つのテーブルを持っています。バージョン番号を更新すると、「テーブル要求(CREATE_REQUESTSを参照する)がすでに作成されています」というエラーが表示されました。私ONUPGRADE方法を見て...
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS contacts");
onCreate(db);
}
は、次の行、その後、のonCreateメソッドで私のDATABASE_CREATEテーブルを参照ラインdb.execSQL("DROP TABLE IF EXISTS contacts")
は、古いテーブルを削除するために使用されていることを理解するために私を導いたonCreate(db);
それを再現する。そのexecSQL行にリクエストを追加しなかったため、エラーが発生しました。ここに問題があります:私はすでに持っている2つのテーブルのデータを失うことはありません。私がやろうとしているようにテーブルを追加する方法はありますか?古いデータをすべて失うことはありませんか?ありがとう。
フムのために正常に動作します後
。あなたがonUpgradeでそれをした場合、誰かがゼロからアプリケーションを使用するときには作成されないだろうが、私はonCreateメソッドにそれを置く限り、大きな問題ではないと私の懸念があると思う。ありがとう! – JMRboosties
onUpgradeは、既存のアプリがアップグレードされた場合にのみ呼び出されます。最初からアプリを起動すると、onCreateだけが呼び出されます。 – EboMike
データベースバージョンをインクリメントするときにのみ呼び出されます。 –