sql >> Database >  >> RDS >> SQLite

Meerdere rijen verwijderen met ID's?

Wanneer je een enkele string opgeeft als whereArgs , een enkele string komt terecht in het SQL-commando, alsof je dit had geschreven:

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

Dit zou elke _id . vergelijken waarde tegen de waarde '1,2,42' , wat natuurlijk niet werkt.

Als u drie parametermarkeringen gebruikt en drie tekenreeksen geeft in de whereArgs array, zou je eindigen met drie strings, zoals deze:

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

Dit werkt alleen als de _id kolom heeft een geheeltallige affiniteit, wat waar is voor een kolom die is gedeclareerd als INTEGER PRIMARY KEY, maar niet in het algemeen.

De Android-database-API staat niet toe dat queryparameters een ander type hebben dan een tekenreeks. Als u gehele getallen gebruikt, moet u ze gewoon rechtstreeks invoegen (zoals in het antwoord van ianhanniballake):

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


  1. Risico bij gebruik van dynamisch geheugen binnen Hyper-V

  2. Een technische vergelijking:Microsoft Access 2016 versus SQL Server 2016

  3. Hoe u een controlebeperking op meerdere kolommen in SQL Server kunt maken - SQL Server / TSQL-zelfstudie, deel 84

  4. Hoe UUID() werkt in MariaDB