sql >> Base de Datos >  >> RDS >> SQLite

¿Cuál es el propósito de la función String[] whereArgs in int delete (String table, String whereClause, String[] whereArgs)?

Como dice la documentación, se usa para ? marcadores en su cadena de consulta. Por ejemplo, podría usar esto:

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

El uso de marcadores de parámetros es muy importante para evitar la inyección de SQL. Por ejemplo,

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

no eliminará todas las filas de su tabla, pero si lo hizo ingenuamente

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

y userName se estableció en "' OR '' = '" , eso de hecho destruiría toda tu mesa.