нет такой таблицы: TABLE_TEAM (код 1): при компиляции: SELECT * FROM TABLE_TEAM WHERE (TEAM_ID = '133604')

У меня проблема с базой данных в android kotlin. каждый раз, когда я пытаюсь использовать его, он всегда говорил, что такой таблицы нет. но я сделал таблицу.

это моя база данных открытая помощница

    class MyDatabaseOpenHelper(ctx: Context) : ManagedSQLiteOpenHelper(ctx, "FavoriteTeam.db", null, 1) {
    companion object {
        private var instance: MyDatabaseOpenHelper? = null

        @Synchronized
        fun getInstance(ctx: Context): MyDatabaseOpenHelper {
            if (instance == null) {
                instance = MyDatabaseOpenHelper(ctx.applicationContext)
            }
            return instance as MyDatabaseOpenHelper
        }
    }

    override fun onCreate(db: SQLiteDatabase?) {
        // Here you create tables

        db?.createTable(FavoriteTeam.TABLE_TEAM, true,
                FavoriteTeam.ID to INTEGER + PRIMARY_KEY + AUTOINCREMENT,
                FavoriteTeam.TEAM_ID to TEXT + UNIQUE,
                FavoriteTeam.TEAM_NAME to TEXT,
                FavoriteTeam.TEAM_BADGE to TEXT)

        db?.createTable(Favorite.TABLE_FAVORITE, true,
                Favorite.ID to INTEGER + PRIMARY_KEY + AUTOINCREMENT,
                Favorite.EVENT_ID to TEXT + UNIQUE,
                Favorite.HOME_ID to TEXT + UNIQUE,
                Favorite.AWAY_ID to TEXT + UNIQUE,
                Favorite.TEAM_HOME to TEXT,
                Favorite.TEAM_AWAY to TEXT,
                Favorite.TEAM_HOME_SCORE to TEXT,
                Favorite.TEAM_AWAY_SCORE to TEXT,
                Favorite.DATE to TEXT)
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        // Here you can upgrade tables, as usual
        db.dropTable(Favorite.TABLE_FAVORITE, true)
        db.dropTable(FavoriteTeam.TABLE_TEAM, true)
    }
}

// Access property for Context
val Context.database: MyDatabaseOpenHelper
    get() = MyDatabaseOpenHelper.getInstance(applicationContext)

это мои данные для базы данных

data class FavoriteTeam(val id: Long?, val teamId: String?, val teamName: String?, val teamBadge: String?) {

companion object {
    const val TABLE_TEAM: String = "TABLE_TEAM"
    const val ID: String = "ID_"
    const val TEAM_ID: String = "TEAM_ID"
    const val TEAM_NAME: String = "TEAM_NAME"
    const val TEAM_BADGE: String = "TEAM_BADGE"
}

}

и вот где я его называю

private fun favoriteState() {
    database.use {
        val result = select(FavoriteTeam.TABLE_TEAM)
                .whereArgs("(TEAM_ID = {id})",
                        "id" to idTeam)
        val favorite = result.parseList(classParser<FavoriteTeam>())
        if (!favorite.isEmpty()) isFavorite = true
    }
}

и он всегда показывает эту ошибку no such table: TABLE_TEAM (code 1): , while compiling: SELECT * FROM TABLE_TEAM WHERE (TEAM_ID = '133604')

Я не знаю почему. когда я хочу создать таблицу TABLE_FAVORITE она работает хорошо, но когда я хочу создать TABLE_TEAM она всегда показывает, какую ошибку я хочу вставить или выбрать. пожалуйста, помогите мне, если вы знаете. благодарю вас

Всего 2 ответа


Попробуйте удалить приложение и повторите попытку, поскольку создание TABLE выполняется в OnCreate, которое вызывается только один раз на протяжении всего жизненного цикла приложения, поэтому вновь созданная TABLE не будет отражать, если это старая apk-сборка или повторное создание таблиц снова в onUpgrade после их удаления


OnCreate в основном не создает таблицу во время запуска проекта, поэтому откройте таблицу и запустите проект.


Есть идеи?

10000