データベースで構成されるアンドロイドアプリを開発しました。モバイルにインストールすると、初めて正常に動作します。以前にインストールしたバージョンをアンインストールせずにデータベースを変更してもう一度インストールするとクラッシュします。データベースに何らかの変更を加えたときにAndroidアプリがクラッシュする
注:私は以前に格納されたデータ
任意の提案の友人を維持したいので、私は私の以前のバージョンをアンインストールしたくないですか?
データベースで構成されるアンドロイドアプリを開発しました。モバイルにインストールすると、初めて正常に動作します。以前にインストールしたバージョンをアンインストールせずにデータベースを変更してもう一度インストールするとクラッシュします。データベースに何らかの変更を加えたときにAndroidアプリがクラッシュする
注:私は以前に格納されたデータ
任意の提案の友人を維持したいので、私は私の以前のバージョンをアンインストールしたくないですか?
カラムを追加するなどの変更を行った場合は、完全アンインストールまたはデータベースバージョンのアップグレードが必要です。あなたは、データベースの構造を変更したとき1で、データベースのバージョン番号を増やし
データベースのバージョンを増やす方法を教えてください。 – Govind
私たちが助けることができるようにいくつかのコードを投稿してください – tyczj
実際に私はcode.I経由でデータベースを作成していません、私はSqliteブラウザを使用して作成したデータベースに接続しています。 db = thisを使用してコードで接続します。openOrCreateDatabase(DB_NAME、MODE_PRIVATE、null); 文字列selectQuery = "SELECT COUNT(*)FROM" + TABLE_TRIP; カーソルc = db.rawQuery(selectQuery、null); – Govind
でそれを格納するための一時データベースを作成することにより、第1のデータのバックアップを作成しない限り、
いずれかの方法あなたは、テーブル内のすべてのデータが失われます。 (つまり、新しい列の追加、既存の列の削除、列のデータ型の変更、列名の変更など)。
あなたのdbヘルパークラスのonUpgrade()メソッドの中に2行下に置いてください。
db.execSQL("DROP TABLE IF EXISTS your_table_name_goes_here");
onCreate(db);
毎回データベースの現在のバージョン番号をチェックします。現在のデータベースバージョンとそれ以前のバージョンとの間に不一致がある場合は、onUpgrade()メソッドを実行してデータベースをアップグレードするだけです。そこで、すべてのテーブルを削除して、新しいテーブルを再度作成します。 これで、dbの操作中に 'n'個のカラムを追加/削除できるようになりました。あなたがしなければならないのは、バージョン番号を1だけ増やし、db構造を変更するときに実行するだけです。あなたはおそらく、これらのcontructorsかのいずれかを使用するデータベースを作成するとき
:あなたが見ることができるように、変数dbVersion
あり
public TimePointsSQLiteHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, dbName, factory, dbVersion);
}
private TimePointsSQLiteHelper(Context context) {
super(context, dbName, null, dbVersion);
}
を、これはあなたが避けるために、データベースのバージョンを示すものですあなたが持っている問題。あなたが簡単に変更できるように、あなたのデータベースのバージョン/番号を古いものにするために最終的な静的int変数を使用することをお勧めします。 例えば:
public final static int dbVersion = 1;
次に、あなたの現在のアプリケーションやデータへの変更を適用するためにonUpgrade(...)
および/またはonDowngrade(...)
をoverrite必要があります。
それを行うための最も簡単かつ最速の方法だけですべてのテーブルをドロップし、それらを再度作成し、言及した1 @SANTHOSHです:
db.execSQL("DROP TABLE IF EXISTS your_table_name");
onCreate(db);
は、このソリューションで、あなたの現在のデータが失われますことを注意してください保存あなたのデータベースに。 onUpgrade
とonDowngrade
にロジックを追加して、データベースのあるバージョンから別のバージョンにデータを移行したい場合は、それを移行する必要があります。
antカラム名を作成または変更するとクラッシュするので、アプリをアンインストールして新しいアプリをインストールすると思います –
私は以前のデータを失いたくありません。 – Govind