【问题标题】:Error when trying to use Room library. [SQLITE_ERROR] SQL error or missing database尝试使用 Room 库时出错。 [SQLITE_ERROR] SQL 错误或缺少数据库
【发布时间】:2017-12-23 12:50:43
【问题描述】:

我正在尝试使用新的房间库,但出现此错误

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

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

警告:未向注解提供架构导出目录 处理器,因此我们无法导出架构。您可以提供 room.schemaLocation 注释处理器参数或设置 exportSchema 为 false。

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

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>
}

实体

@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? = ""
)

【问题讨论】:

    标签: android kotlin android-room


    【解决方案1】:

    原来我只是忘记将 Station 实体添加到 RoomDatabase

    添加后一切都按预期工作

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

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 1970-01-01
      • 2014-06-03
      • 2013-06-01
      • 2017-02-11
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2016-08-14
      相关资源
      最近更新 更多