【发布时间】:2019-01-08 04:08:43
【问题描述】:
使用 Android Room 库,如何编写一个 Dao 方法,该方法返回一个布尔值,指示数据库中是否存在主键?
【问题讨论】:
标签: android android-room
使用 Android Room 库,如何编写一个 Dao 方法,该方法返回一个布尔值,指示数据库中是否存在主键?
【问题讨论】:
标签: android android-room
sqlite pragma 包含此信息(如果列是主键,则列上的 pk=1)因此执行与 sqlite_master 连接的查询(以获取数据库中的所有表)应该这样做。我的 DAO 语法有点生疏,但查询有效
@Query("SELECT
count(*)!=0
FROM
sqlite_master AS m
JOIN
pragma_table_info(m.name) AS p
Where
p.pk=1")
public abstract bool findPrimaryKeyExistsInDB();
【讨论】:
您可以通过以下代码进行计数并返回(布尔值):
@Query("SELECT count(*)!=0 FROM PERSON WHERE UID = :uid ")
boolean containsPrimaryKey(int uid);
哪里,uid -> 你的主键
PERSON-> 你的表名
它对我有用,希望对你也有用。
【讨论】: