Создание нескольких таблиц SQLite Android

Я создаю БД mydb в SQLite, в которой будет три таблицы tbl1, tbl2, tbl3.

Класс работы первой таблицы с БД:

public class DbHelperTbl1 extends SQLiteOpenHelper {

    public DbHelperTbl1 (@Nullable Context context) {
        super(context, Constants.DB_NAME, null, Constants.DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(Constants1.CREATE_TABLE);
    }
    
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(Constants1.DROP_TABLE);
        onCreate(db);
    }

    @Override
    public void onOpen(SQLiteDatabase db) {
        super.onOpen(db);      
        db.execSQL(Constants.DB_FOREIGN_KEY_ENABLE);
    }

}

Это SQL выражения:

public static final String _ID_TABLE = "_id";
public static final String FIELD_NAME = "name";
public static final String TABLE_NAME = "tbl1";
public static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME +
    " (" + _ID_TABLE + " INTEGER PRIMARY KEY AUTOINCREMENT," +
    FIELD_NAME + " TEXT NOT NULL UNIQUE)";
public static final String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLE_NAME;

Другие два полностью аналогичны, за исключением SQL выражений.

На сколько я понял, БД создается когда вызываю метод openDb класса DbManagerTbl1

public class DbManagerTbl1 implements DbManagerService {
    private Context context;
    private DbHelperTbl1 dbHelperTbl1;
    private SQLiteDatabase db;

    public DbManagerTbl1(Context context) {
        this.context = context;
        dbHelperTbl1 = new DbHelperTbl1(context);
    }

    public void openDb() {
        db = dbHelperTbl1.getWritableDatabase();
    }

    public void closeDb(){
        dbHelperTbl1.close();
    }
    ...

}

Таким образом создается БД с таблицей tbl1, далее наполняю ее данными, все работает. Далее пытаюсь создать в этой БД следующую таблицу аналогичным образом. И получаю ошибку

SQLiteLog: (1) no such table: tbl1

В чем тут проблема? Да, этой таблицы действительно нет в базе, так я же и пытаюсь ее создать вызвав соответствующий метод openDb. С первой же таблицей такая штука сработала, почему тут ошибка?


Ответы (0 шт):