Android アプリで、1 つのデータベースに複数のテーブルを作成したいと考えています。
各テーブルには異なる名前が付けられており、プログラムの実行が開始されるまで名前がわからないため、すべて動的です。
ただし、最初のテーブルが作成され、新しいテーブルが作成されると、「そのようなテーブルはありません」というエラーが表示されません。
これは、テーブルを作成するために私が行うことです:
private class SQLiteHelper extends SQLiteOpenHelper {
private static final String TAG = "SQLiteHelper";
private String DATABASE_CREATE = "CREATE TABLE IF NOT EXISTS "
+ helper.getTableName() + "(" + helper.getTableColumns() + ");";
public SQLiteHelper(Context context) {
super(context, helper.getDatabaseName(), null, helper
.getDatabaseVersion());
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
Log.d(TAG, "database created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + helper.getTableName());
onCreate(db);
}
}
helper は、DB コンストラクターに渡されるオブジェクトです。
public ProductDB(Context context, IDatabaseHelper helper) {
this.context = context;
this.helper = helper;
}
最初にデータベースを作成すると、すべてが正常に機能しますが、2 番目のテーブルを追加する必要があるとすぐに、アクセスしようとするとクラッシュします。
これを修正するにはどうすればよいですか?