Android 仅当房间图元的列为';什么是空的?
只有当列为空时,才有方法更新实体的列吗?以下是我在DAO界面中的更新功能:Android 仅当房间图元的列为';什么是空的?,android,android-sqlite,android-room,android-database,android-architecture-components,Android,Android Sqlite,Android Room,Android Database,Android Architecture Components,只有当列为空时,才有方法更新实体的列吗?以下是我在DAO界面中的更新功能: @Query("UPDATE media SET media_name = :mediaName, media_data = :mediaData WHERE id = :id") fun update(id: Int, mediaName: String?, mediaData: String?) 。。。因为到目前为止,这些列的值“null”已更新。您可以尝试: @Query("UPDATE media SET me
@Query("UPDATE media SET media_name = :mediaName, media_data = :mediaData WHERE id = :id")
fun update(id: Int, mediaName: String?, mediaData: String?)
。。。因为到目前为止,这些列的值“null”已更新。您可以尝试:
@Query("UPDATE media SET media_name = (CASE WHEN media_name IS NULL THEN :mediaName ELSE media_name END), media_data = (CASE WHEN media_data IS NULL THEN :mediaData ELSE media_data END) WHERE id = :id")
fun update(id: Int, mediaName: String?, mediaData: String?)
您的意思是
更新媒体集media\u name=:media name,media\u data=:media data,其中id=:id和media\u name为空,media\u data为空
?@commonware很抱歉不清楚,但是非常多的情况下,非空参数只会更新到数据库中,就像@Query一样(“UPDATE media SET media_name=:mediaName,media_data=:mediaData,其中id=:id和:mediaName不为NULL且:mediaData不为NULL”)
除了这不起作用之外,只需在调用UPDATE()之前检查这些值是否为NULL
)
@commonware是的,这是我的想法,但我想知道是否有更理想的SQL替代方案。谢谢Mark:-)