Androidアプリに要件があります。
アプリの次のリリースから、テーブルTを持つ既存のデータベースAは、私は新しいデータベースBを作成したい、ありMOVE AからBへの私のテーブルをWITHすべての既存のデータ。
既存のデータベースからダンプを取得し、それをアセットファイルに保存する方法があると思います。次に、そのファイルを使用して、新しいデータベースにテーブルを復元します。
その間にアプリが強制終了されると一貫性のない状態になる可能性があるため、そのデータをメモリに保存できません。
ドキュメント/フォーラムで検索に時間を費やした後、これを行うための明確な方法を見つけることができません。
助けてください。
これATTACH
は、sqliteのコマンドを使用して実現できます。1つは、最初のデータベースのパスを指定することです。
private static String FIRST_DB_PATH = context.getDatabasePath("Sample.sqlite").toString();
次に、それをsecondDbにアタッチします
SQLiteDatabase secondDB = secondDBHandler.getWritableDatabase();
secondDB.execSQL("ATTACH DATABASE '" + FIRST_DB_PATH + "' AS tempDb");
次に、挿入クエリを実行します。注:メインとしてsecondDBを使用します
secondDB.execSQL("INSERT INTO main." + SeconDB_table_name + "SELECT * FROM tempDb."+ FirstDB_table_name );
次に、最後に最初のデータベースをデタッチします
secondDB.execSQL("DETACH tempDb");
お役に立てれば
編集:
テーブルを落とすためにこれを行う
secondDB.execSQL("DROP TABLE IF EXISTS main." + SeconDB_table_name);
これが、firstDbのコピーとしてsecondDBのテーブルを作成する方法です。
secondDB.execSQL("CREATE TABLE main." + SeconDB_table_name + " AS SELECT * FROM tempDb." + FirstDB_table_name);
コメントで意味するのが、最初のテーブルを2番目のテーブルに移動した後にドロップすることである場合は、デタッチする前にドロップします。
secondDB.execSQL("DROP TABLE IF EXISTS tempDb." + FirstDB_table_name);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加