当前位置: 首页 > 知识库问答 >
问题:

无法使用文件室数据库

笪昌翰
2023-03-14

我想使用房间数据库,但在构建应用程序时出现以下错误:

执行组织时出错。喷气式飞机。科特林。格拉德尔。内部的KaptExecution公司

和一些这样的错误:

错误:不确定如何将游标转换为此方法的返回类型(java.util.ArrayList

我将Room数据库与这些类一起使用:

书签实体:

@Entity(tableName = "bookmark")
class BookmarkEntity(
    @PrimaryKey(autoGenerate = true)
    var id: Int,
    @ColumnInfo(name = "TITLE")
    var title: String,
    @ColumnInfo(name = "URL")
    var url: String,
    @ColumnInfo(name = "IMAGE")
    var image: String
)

书签数据库:

@Database(entities = [BookmarkEntity::class], version = 1)
abstract class BookmarkDataBase : RoomDatabase() {

    abstract fun bookmark(): BookmarkDAO

    companion object {
        private var instance: BookmarkDataBase? = null
        fun getInstance(context: Context): BookmarkDataBase {
            if (instance == null)
                instance =
                    Room.databaseBuilder(context, BookmarkDataBase::class.java, "bookmark")
                        .allowMainThreadQueries()
                        .fallbackToDestructiveMigration()
                        .build()
            return instance!!
        }
    }
}

书签DAO:

@Dao
interface BookmarkDAO {

    @Insert
    fun insertData(bookmarkEntity: BookmarkEntity): Boolean

    @Query("select * from bookmark")
    fun getData(): ArrayList<BookmarkModel>

    @Query("DELETE FROM bookmark WHERE id = :id")
    fun deleteData(id: Int)

    @Delete
    fun deleteData(bookmarkEntity: BookmarkEntity)

}

我为房间添加此依赖项:

implementation "androidx.room:room-runtime:2.2.5"
kapt "androidx.room:room-compiler:2.2.5"

并在构建顶部添加应用插件:“kotlin kapt”。gradle文件。但这种错误仍然存在。你能帮帮我吗?

共有2个答案

钮才哲
2023-03-14

我想您不能返回arraylist,只需删除并使用list即可。

  @Query("select * from bookmark")
fun getData(): ArrayList<BookmarkModel>
罗韬
2023-03-14

问题是,房间的查询函数只能返回由实体注释的类的实例。所以,BookmarkDAO。getData()无法返回书签模型的列表。

因此:

@Query("select * from bookmark")
fun getData(): List<BookmarkEntity>
 类似资料:
  • 我试图用原始文件夹中的一个简单JSON填充我的房间数据库,这是我的代码 我明白了 原因:java。伊奥。FileNotFoundException:app/res/raw/cars\u示例。json

  • 我有一个存储在变量中的数据,然后我想把我的数据写到excel文件中。xlsx)。(即)我使用自动化测试工具,如硒从网页上获取数据,我把它存储在变量,我想写在xlsx文件 在大量的谷歌搜索后,我发现许多用户使用列表或对象来写入。xlsx文件。 我创建了一个列表并将我的变量添加到该列表中,并使用循环语句(for循环)通过打印来检查我的数据是否存储在列表中。 然后我创建了XSSFWorkbook和XSS

  • 我正在尝试从com包中的CSV文件中读取值。实例但当我使用以下语法运行代码时: 上面写着: java.io.FileNotFoundException: Dataset.csv 我也尝试过使用: 仍然不工作。任何帮助都会很有帮助。谢谢

  • 我刚刚开始使用node.js中的level模块学习level.db。 但这段代码给出了以下 错误[WriteError]:必须是C:\users\mathe\desktoph\leveldb-and-crypto\node_modules\levelup\lib\levelup.js:274:23 有人能告诉我哪里不对劲吗?

  • 我试图插入用户记录在房间数据库使用静态编程语言和它的完美工作。 现在我想返回新插入的记录id,以检查记录是否成功插入到房间数据库中。 但是,当我在insert方法中应用长返回类型并运行代码时,我得到以下错误。 错误:方法返回long,但它应该返回以下内容之一:

  • 问题内容: 问题:为什么我不能打开数据库? 信息:我正在使用数据库进行项目。我编写了一个测试程序,该程序运行并传递数据库: 单元测试程序可以使之毫无问题。但是,当我实际使用将相同位置传递给它的程序时,出现以下错误: OperationalError:无法打开数据库文件 我试着用: 在三种情况下,我遇到了以上错误。最令人沮丧的部分是事实可以做到这一点,但实际程序却做不到。 关于到底发生了什么的任何线