Android, готовая БД SQLite. Не создаётся таблица

Пишу android-приложение на Kotlin. К нему подключил готовую БД на sqlite, но так как только начинаю изучать всю эту тему, знаний на самостоятельное подключение базы не хватило, поэтому скопипастил код из какого-то гайда. В итоге база вроде подключилась, но при попытке создать внутри неё таблицу ничего не происходит. Саму базу создавал через DB Browser и через него же проверял работоспособность sql-запроса, который будет создавать таблицу уже внутри приложения.

Код DBHelper'а

class DBHelper ( private val context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION ) {

    private val preferences: SharedPreferences = context.getSharedPreferences(
        context.packageName, Context.MODE_PRIVATE
     )
    private fun installedDatabaseIsOutdated(): Boolean {
        return preferences.getInt(DATABASE_NAME, 0) < DATABASE_VERSION
    }
    private fun writeDatabaseVersionInPreferences() {
        preferences.edit().apply {
            putInt(DATABASE_NAME, DATABASE_VERSION)
            apply()
        }
    }
    private fun installDatabaseFromAssets() {
        val inputStream = context.assets.open("$ASSETS_PATH/$DATABASE_NAME")
        try {
            val outputFile = File(context.getDatabasePath(DATABASE_NAME).path)
            val outputStream = FileOutputStream(outputFile)

            inputStream.copyTo(outputStream)
            inputStream.close()

            outputStream.flush()
            outputStream.close()
        } catch (exception: Throwable) {
            throw RuntimeException("The $DATABASE_NAME database couldn't be installed.", exception)
        }
    }

    @Synchronized
    private fun installOrUpdateIfNecessary() {
        if (installedDatabaseIsOutdated()) {
            context.deleteDatabase(DATABASE_NAME)
            installDatabaseFromAssets()
            writeDatabaseVersionInPreferences()
        }
    }
    override fun getWritableDatabase(): SQLiteDatabase {
        return super.getWritableDatabase()
    }
    override fun getReadableDatabase(): SQLiteDatabase {
        installOrUpdateIfNecessary()
        return super.getReadableDatabase()
    }

    override fun onCreate(db: SQLiteDatabase?) {
        db?.execSQL(DBNameClass.CREATE_TABLE_ORDERS)
        db?.execSQL(DBNameClass.CREATE_TABLE_BUSKET)
    }
    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
    }

}

Тут хранятся все имена для базы

object DBNameClass : BaseColumns {
    const val TABLE_NAME_BUSKET = "busket"
    const val COLUMN_NAME_MENUID = "id_menu"
    const val COLUMN_NAME_KOLVO = "kol_vo"
    const val COLUMN_NAME_ORDERID = "id_order"

    const val TABLE_NAME_ORDERS = "orders"
    const val COLUMN_NAME_ID = "id"
    const val COLUMN_NAME_CLIENTNAME = "client_name"
    const val COLUMN_NAME_CLIENTADD = "client_address"
    const val COLUMN_NAME_CLIENTNUMBER = "client_number"
    const val COLUMN_NAME_ORDERDATA = "order_date"

    const val TABLE_NAME_MENU = "menu"
    const val COLUMN_NAME_IDMENU = "_id"
    const val COLUMN_NAME_MENUNAME = "menu_name"
    const val COLUMN_NAME_MENUCOST = "menu_cost"


    const val DATABASE_VERSION = 2
    const val DATABASE_NAME = "dostavka.db"
    const val ASSETS_PATH = "database"

    const val CREATE_TABLE_ORDERS = "CREATE TABLE IF NOT EXISTS $TABLE_NAME_ORDERS (" +
           "$COLUMN_NAME_ID INTEGER PRIMARY KEY," +
           "$COLUMN_NAME_CLIENTNAME TEXT NOT NULL," +
           "$COLUMN_NAME_CLIENTADD TEXT NOT NULL," +
           "$COLUMN_NAME_CLIENTNUMBER INTEGER NOT NULL," +
           "$COLUMN_NAME_ORDERDATA TEXT NOT NULL);"


    const val CREATE_TABLE_BUSKET = "CREATE TABLE IF NOT EXISTS $TABLE_NAME_BUSKET (" +
            "$COLUMN_NAME_MENUID INTEGER NOT NULL," +
            "$COLUMN_NAME_KOLVO INTEGER NOT NULL," +
            "$COLUMN_NAME_ORDERID INTEGER," +
            "FOREIGN KEY ($COLUMN_NAME_MENUID) REFERENCES menu(_id)," +
            "FOREIGN KEY ($COLUMN_NAME_ORDERID) REFERENCES $TABLE_NAME_ORDERS($COLUMN_NAME_ID));"
}

Класс для операций над базой

class DBManager(context: Context) {
    private val dbHelper = DBHelper(context)
    var db : SQLiteDatabase? = null
    
    @SuppressLint("Recycle")
    fun readDB() {
        db = dbHelper.readableDatabase

    }
    fun writeDB(){
        db = dbHelper.writableDatabase
    }

    fun addItemInBusket (menuid: Int, kolvo: Int, orderid: Int) {
        val values = ContentValues().apply {
            put(DBNameClass.COLUMN_NAME_MENUID, menuid)
            put(DBNameClass.COLUMN_NAME_KOLVO, kolvo)
            put(DBNameClass.COLUMN_NAME_ORDERID, orderid)
        }
    }
}

В главное активити делаю базу доступной для записи

class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener {

    @SuppressLint("Recycle")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val dbManager = DBManager(this)
        dbManager.writeDB()
    }

Сама база хранится в папке assets/database


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