sql >> Databáze >  >> RDS >> SQLite

Smazat více řádků pomocí ID?

Když zadáte jeden řetězec jako whereArgs , jeden řetězec skončí v příkazu SQL, jako byste napsali toto:

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

To by porovnalo každé _id hodnotu proti hodnotě '1,2,42' , což samozřejmě nefunguje.

Pokud použijete tři značky parametrů a zadáte tři řetězce do whereArgs pole, skončili byste se třemi řetězci takto:

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

Toto funguje pouze v případě, že _id sloupec má celočíselnou afinitu, což platí pro sloupec deklarovaný jako INTEGER PRIMARY KEY, ale ne v obecném případě.

Databázové rozhraní Android API neumožňuje, aby parametry dotazu měly jakýkoli typ kromě řetězce. Při použití celých čísel byste je měli vložit přímo (jako v odpovědi ianhanniballake):

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


  1. Jak LAST_DAY() funguje v MariaDB

  2. Datový model autoservisu

  3. Jak používat funkci Coalesce v Oracle

  4. Jak odstranit výchozí hodnotu sloupce v MySQL