Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 仅当房间图元的列为';什么是空的?_Android_Android Sqlite_Android Room_Android Database_Android Architecture Components - Fatal编程技术网

Android 仅当房间图元的列为';什么是空的?

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

只有当列为空时,才有方法更新实体的列吗?以下是我在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 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:-)