sql >> Databasteknik >  >> RDS >> SQLite

Vill du ta bort flera rader med ID?

När du ger en enskild sträng som whereArgs , en enda sträng hamnar i SQL-kommandot, som om du hade skrivit detta:

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

Detta skulle jämföra varje _id värde mot värdet '1,2,42' , vilket naturligtvis inte fungerar.

Om du använder tre parametermarkörer och ger tre strängar i whereArgs array, skulle du sluta med tre strängar, så här:

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

Detta fungerar bara när _id kolumn har heltalsaffinitet, vilket är sant för en kolumn som deklareras som INTEGER PRIMARY KEY, men inte i det allmänna fallet.

Androids databas-API tillåter inte att frågeparametrar har någon annan typ än sträng. När du använder heltal bör du bara infoga dem direkt (som i ianhanniballakes svar):

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


  1. När behöver jag använda semikolon kontra snedstreck i Oracle SQL?

  2. Neo4j Query Language - Cypher

  3. T-SQL Hoppa över Ta lagrad procedur

  4. Skapar användare med krypterat lösenord i PostgreSQL