尝试使用Room库时出错。 [SQLITE_ERROR] SQL错误或缺少数据库

时间:2017-07-18 14:59:18

标签: android kotlin android-room

我试图使用新的房间图书馆,但我收到此错误

  

错误:查询存在问题:[SQLITE_ERROR] SQL错误或   缺少数据库(没有这样的表:站)

     

错误:不确定如何将Cursor转换为此方法的返回类型

     

警告:未向注释提供架构导出目录   处理器,所以我们无法导出架构。你可以提供   room.schemaLocation注释处理器参数或集   exportSchema为false。

     

错误:org.gradle.api.internal.tasks.compile.CompilationFailedException:   编译失败;有关详细信息,请参阅编译器错误输出。

enter image description here

RoomDatabase.kt

@Database(entities = TrolleyType::class), version = 2)
abstract class AppDatabase : RoomDatabase() {
    abstract fun stationDao(): StationDao
}

MyDao.kt

@Dao
interface MyDao {
    @get:Query("SELECT * FROM Station")
    val stations: List<Station>


    @get:Query("SELECT * FROM TrolleyType")
    val trolleyTypes: List<TrolleyType>
}

的entites

@Entity
data class Station(
        @PrimaryKey @ColumnInfo(name = "_id") var id: Int = 0,
        @ColumnInfo(name = "StationName") var stationName: String? = "",
        @ColumnInfo(name = "StationArabic") var stationArabic: String? = ""
)

@Entity
data class TrolleyType(
        @PrimaryKey @ColumnInfo(name = "_id") var id: Int = 0,
        @ColumnInfo(name = "Type") var stationName: String? = "",
        @ColumnInfo(name = "TypeArabic") var stationArabic: String? = ""
)

1 个答案:

答案 0 :(得分:18)

事实证明,我忘了将Station实体添加到RoomDatabase

添加后,每件事都按预期工作

@Database(entities = TrolleyType::class, Station::class), version = 2)
abstract class AppDatabase : RoomDatabase() {
    abstract fun stationDao(): StationDao
}