SQLite
 sql >> Database >  >> RDS >> SQLite

Qual è lo scopo della funzione String[] whereArgs in int delete (String table, String whereClause, String[] whereArgs)?

Come dice la documentazione, è usato per ? marcatori nella stringa di query. Ad esempio, potresti usare questo:

SQLiteDatabase.delete("users", "user_name = ?", new String[] {"Talib"});

L'uso di indicatori di parametro è molto importante per evitare l'iniezione di SQL. Ad esempio,

SQLiteDatabase.delete("users", "user_name = ?", new String[] {"' OR '' = '"});

non cancellerà tutte le righe della tua tabella, ma se lo hai fatto ingenuamente

SQLiteDatabase.delete("users", "user_name = '" + userName + "'");

e userName era impostato su "' OR '' = '" , che in effetti distruggerebbe l'intero tavolo.