Комната Android: Как узнать, существует ли первичный ключ?

1

С библиотекой Android Room, как мне написать метод Dao, который возвращает логическое значение, указывающее, существует ли первичный ключ в базе данных?

Теги:
android-room

1 ответ

1
Лучший ответ

Прагма sqlite содержит эту информацию (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();

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

  • 0
    @ theJian не могли бы вы принять ответ?
  • 1
    На самом деле я пытался выяснить, есть ли у библиотеки Room API для него, но похоже, что на данный момент единственный способ - это написать сырой SQL.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню