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

无法使用文件室数据库

笪昌翰
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 有人能告诉我哪里不对劲吗?

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

  • 问题内容: 在Django中设置服务器时出现此错误。它是sqlite3,这意味着它应该创建.db文件,但似乎没有这样做。我已经将SQLite规定为后端,并且将其放置在绝对的文件路径中,但是没有运气。 这是错误还是我做错了什么?(只是在想,在Ubuntu中指定的绝对文件路径是否有所不同?) 这是我的settings.py文件的开头: 问题答案: 问题你正在使用SQLite3,你的DATABASE_N