Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 房间:添加一个额外的列_Kotlin_Android Room - Fatal编程技术网

Kotlin 房间:添加一个额外的列

Kotlin 房间:添加一个额外的列,kotlin,android-room,Kotlin,Android Room,我正在使用Room/Kotlin创建一个应用程序,希望添加一个附加列,但无法显示第二列。应用程序在模拟器上工作,但不会正确显示数据,即pb,然后是该pb的值。它将只显示第一列 刀 分贝 您是否更新了数据库版本?你能用日志错误编辑这篇文章吗?@Shermano我刚刚用数据库和日志错误更新了这篇文章。你能把数据库类的版本改为2并检查是否有效吗?您发布的日志似乎与实际日志无关error@Shermano谢谢,我试过了,但还是不能正常工作。我现在没有任何错误,但无法显示第二列。我想我缺少了第二列的一些代

我正在使用Room/Kotlin创建一个应用程序,希望添加一个附加列,但无法显示第二列。应用程序在模拟器上工作,但不会正确显示数据,即pb,然后是该pb的值。它将只显示第一列

分贝


您是否更新了数据库版本?你能用日志错误编辑这篇文章吗?@Shermano我刚刚用数据库和日志错误更新了这篇文章。你能把数据库类的版本改为2并检查是否有效吗?您发布的日志似乎与实际日志无关error@Shermano谢谢,我试过了,但还是不能正常工作。我现在没有任何错误,但无法显示第二列。我想我缺少了第二列的一些代码。我编辑了这篇文章以提供更多详细信息。您的代码似乎没有问题,您插入了新值,并且新列在GetAlphapozeDPB()上没有返回?您是否更新了数据库版本?你能用日志错误编辑这篇文章吗?@Shermano我刚刚用数据库和日志错误更新了这篇文章。你能把数据库类的版本改为2并检查是否有效吗?您发布的日志似乎与实际日志无关error@Shermano谢谢,我试过了,但还是不能正常工作。我现在没有任何错误,但无法显示第二列。我想我缺少了第二列的一些代码。我编辑了这篇文章以提供更多细节。您的代码似乎没有问题,您插入了新值,并且新列在GetAlphaozeDPB()上没有返回?
@Dao
interface PbDao {


    @Query("SELECT * from pb_table ORDER BY pb ASC")
    fun getAlphabetizedPbs(): LiveData<List<Pb>>

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insert(pb: Pb)

    @Query("DELETE FROM pb_table")
    suspend fun deleteAll()
}
@Entity(tableName = "pb_table")

data class Pb(
    @PrimaryKey//(autoGenerate = true) var uid:Int = 0,
    @ColumnInfo(name = "pb") val pb: String = "",
    @ColumnInfo(name = "pb_value") val pb_value: Double = 0.0)

@Database(entities = [Pb::class], version = 1, exportSchema = false)
abstract class PersonalBestDatabase : RoomDatabase() {

    abstract fun pbDao(): PbDao

    companion object {
        @Volatile
        private var INSTANCE: PersonalBestDatabase? = null

        fun getDatabase(
            context: Context,
            scope: CoroutineScope
        ): PersonalBestDatabase {
            // if the INSTANCE is not null, then return it,
            // if it is, then create the database
            return INSTANCE ?: synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    PersonalBestDatabase::class.java,
                    "pb_database"
                )
                    .fallbackToDestructiveMigration()
                    .addCallback(PbDatabaseCallback(scope))
                    .build()
                INSTANCE = instance
                instance
            }
        }

        private class PbDatabaseCallback(
            private val scope: CoroutineScope
        ) : RoomDatabase.Callback() {
            override fun onOpen(db: SupportSQLiteDatabase) {
                super.onOpen(db)

                INSTANCE?.let { database ->
                    scope.launch {
                        populateDatabase(database.pbDao())
                    }
                }
            }
        }
        suspend fun populateDatabase(pbDao: PbDao) {
            pbDao.deleteAll()

            var pb = Pb("Squat", 120.0)
            pbDao.insert(pb)

            pb = Pb("Bench Press", 65.0)
            pbDao.insert(pb)

            pb = Pb("Deadlift", 142.5)
            pbDao.insert(pb)

        }
    }
}