私はテーブルを持つデータベースを作成しました。私はそのデータベースにテーブルを動的に追加したいと思っています。データベースが既にアンドロイドで作成されている場合、データベースにテーブルを追加する方法は?
onOpen()メソッドは、データベースに既に存在する以前のテーブルも変更するので便利ではありません。
私はテーブルを持つデータベースを作成しました。私はそのデータベースにテーブルを動的に追加したいと思っています。データベースが既にアンドロイドで作成されている場合、データベースにテーブルを追加する方法は?
onOpen()メソッドは、データベースに既に存在する以前のテーブルも変更するので便利ではありません。
私はあなたがSQLiteデータベースを使用していると仮定します。その場合、実際の解決策はここに存在します:
Create new table in existing DB in separate SQLiteOpenHelper classです。
まず、このデータベース
private final static String DATABASE_NAME = "MainDB";
private static final int DATABASE_VERSION = 1;
public BaseSQLiteOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
ために、現在のデータベースのバージョンを確認し、データベースのバージョン(DATABASE_VERSION)をインクリメントし、上に新しいテーブルのクエリを追加します。
は下に、そのポストからrmkrishnaの回答を参照してください次のようなアップグレードとoncreateメソッド。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("old query no need to change");
db.execSQL("Create your new table here");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
db.execSQL("Create your new table here as well this for update the old DB");
}
}
if文の代わりに偉大な答えが、私は示唆しているだろう("テーブルが存在しない場合、テーブル名が存在しない場合、テーブル名を作成します(ID INTEGER PRIMARY KEY AUTOINCREMENT、columna TEXT、columnb TEXT);)増分更新を可能にするswitch文を使用します。 – Waves
前のテーブルの値が削除されました – user3807098
バージョン番号を増やしましたか? また、コードやデータベースバージョンを提供していないので、タグを見るので、SQLiteだと分かっていますが、それは私が知っているすべてのものなので、この時点で多くのことを推測する必要があります。次のリンクを確認して、別の回答を確認することもできます: http://stackoverflow.com/questions/9804083/how-to-add-second-table-in-database-in-sqlite –
rawQueryを使用します。 onOpen()以外の場所で「作成」のクエリを実行するだけで済みます。 https://www.sqlite.org/lang_createtable.html –
Rawクエリを使用する(SQLiteDatabase myDB = null;) - (myDB = this.openOrCreateDatabase( "TheDatabaseName"、MODE_PRIVATE、null);) - (myDB.execSQL ( "myDB.close();) – Tasos