SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Was ist der Zweck der Funktion String[] whereArgs in int delete (String table, String whereClause, String[] whereArgs)?

Wie die Dokumentation sagt, wird es für ? verwendet Markierungen in Ihrer Abfragezeichenfolge. Sie könnten zum Beispiel Folgendes verwenden:

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

Die Verwendung von Parametermarkierungen ist sehr wichtig, um SQL-Injection zu vermeiden. Zum Beispiel

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

wird nicht alle Zeilen Ihrer Tabelle löschen, aber wenn Sie es naiv getan haben

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

und userName wurde auf "' OR '' = '" gesetzt , das würde in der Tat Ihren ganzen Tisch zerstören.