Android Room:如何知道主键是否存在?

时间:2019-01-08 04:08:43

标签: android android-room

使用Android Room库,我该如何编写一个Dao方法,该方法返回一个指示数据库中是否存在主键的布尔值?

2 个答案:

答案 0 :(得分:1)

sqlite pragma包含此信息(如果column是主键,则在列上为pk = 1),因此对它执行与sqlite_master结合的查询(以获取db中的所有表)应该可以做到这一点。我的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();

https://www.sqlite.org/pragma.html#pragfunc

答案 1 :(得分:0)

您可以通过以下代码进行计数和返回(布尔值):

@Query("SELECT count(*)!=0 FROM PERSON WHERE UID = :uid ")
boolean containsPrimaryKey(int uid);

where, uid -> 你的主键
PERSON->你的表名
它对我有用,希望对你也有用。