Android 房间插入查询

Android room inserting with a query

我知道可以通过 @Insert 注释将数据插入 SQlite room 库,但我 (出于好奇) 尝试通过 SQL 插入值声明,但 Android studio 向我显示错误,指出无法解析列名。这是一种强制开发人员使用 @Insert 注释的方法,还是我在这里做错了什么?谢谢!

请查看以下屏幕截图 -

如果您省略突出显示的列列表,从而为所有列提供值,例如:-

@Query("INSERT INTO TestTable VALUES(null,:a,:b)")
List<TestTable> getall(String a, String b, String columna, String columnb);

Android Studio 没有抱怨,但你会得到一个编译器错误 :-

error: INSERT query type is not supported yet. You can use:SELECT, DELETE, UPDATE

所以也许早比晚好。

我正在做的是在 RoomDatabase.

上调用 getOpenHelper().getWritableDatabase()

然后你得到 SupportSQLiteDatabase object 本质上是 non-Room 方式。

从那里您可以调用 execSQL() 或使用带有 table 名称和 ContentValues.

insert()
@Entity
data class ModulesRoom(
    @PrimaryKey(autoGenerate = false)
    var id: Int = 0,
    var nav: String = "",
    var name: String = "",
    var imageurl: String = ""
)
for List Object
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun saveEmployees(modules: List<ModulesRoom>)

for single obbjet
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun saveEmployees(modules: ModulesRoom)

Ussage 
val mModules = Modules() 
mModules.id = values
mModules.nav = values 
saveEmployees(mModules)