SQLite
 sql >> база данни >  >> RDS >> SQLite

Да се ​​изтрият ли няколко реда с помощта на идентификатори?

Когато дадете един низ като whereArgs , един низ завършва в SQL командата, сякаш сте написали това:

... WHERE _id IN ('1,2,42')

Това ще сравни всеки _id стойност спрямо стойността '1,2,42' , което разбира се не работи.

Ако използвате три маркера за параметри и дадете три низа в whereArgs масив, ще получите три низа, като този:

... WHERE _id in ('1','2','42')

Това работи само когато _id колоната има целочислен афинитет, което е вярно за колона, декларирана като INTEGER PRIMARY KEY, но не и в общия случай.

API на база данни на Android не позволява на параметрите на заявката да имат какъвто и да е тип, освен низ. Когато използвате цели числа, трябва просто да ги вмъкнете директно (както в отговора на ianhanniballake):

String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-добри практики за работа с множество таблици

  2. Android – Курсор onMapReady (Маркери)

  3. SQLiteDiskIOException:код на грешка 10:грешка в дисковия вход/изход се връща на ICS и Samsung Nexus на DROP TABLE

  4. 4 таблични изходни режима в SQLite

  5. Най-добра практика за хлабава връзка между данни и потребителски интерфейс в Android - адаптер, филтър, CursorLoader и ContentProvider