繁体   English   中英

Android房间插入查询

[英]Android room inserting with a query

我知道可以通过@Insert批注将数据插入SQlite房间库,但是(出于好奇)我尝试通过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

因此,也许早晚会更好。

我做的是调用getOpenHelper().getWritableDatabase()RoomDatabase

然后,您将获得本质上是非Room方式的SupportSQLiteDatabase object

从那里,您可以调用execSQL()或将insert()与表名和ContentValues一起使用

@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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM