Toe*_*Lie 12 database android android-sqlite android-room
我想使用公共常量变量Association.MEMBER_STATUS_APPROVED使用以下房间查询来查询用户关联列表。
@Query("SELECT * FROM Association WHERE memberStatus = " + Association.MEMBER_STATUS_APPROVED)
LiveData<List<Association>> loadUserAssociations();
Run Code Online (Sandbox Code Playgroud)
但是,房间在构建时给了我 [SQLITE_ERROR]。可以通过用如下参数替换常量变量来重写该查询。
@Query("SELECT * FROM Association WHERE memberStatus = :statusApproved")
LiveData<List<Association>> loadUserAssociations(String statusApproved);
Run Code Online (Sandbox Code Playgroud)
我想知道 Room 是否支持这种字符串连接或字符串格式?(或)我可能遗漏了什么吗?
对于遇到同样问题的人,Kotlin 中的解决方案如下:
@Query("SELECT * FROM Association WHERE memberStatus = :statusApproved")
loadUserAssociations(statusApproved: String = Association.MEMBER_STATUS_APPROVED): LiveData<List<Association>>
Run Code Online (Sandbox Code Playgroud)
我认为这是比硬编码或将明显的常量传递到函数中更干净的方法。
如果你进行这样的查询,
"SELECT * FROM Association WHERE memberStatus = " + Association.MEMBER_STATUS_APPROVED
只是
“SELECT * FROM Association WHERE memberStatus = somevalue”
sql 无法知道“somvalue”是一个字符串。
“从协会中选择 * WHERE memberStatus = '” + Association.MEMBER_STATUS_APPROVED + “'”
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |