нет такой таблицы: TABLE_TEAM (код 1): при компиляции: SELECT * FROM TABLE_TEAM WHERE (TEAM_ID = '133604') - PullRequest
0 голосов
/ 26 ноября 2018

У меня проблема с базой данных в 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 ]

0 голосов
/ 26 ноября 2018

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

0 голосов
/ 26 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...