Heim >Datenbank >MySQL-Tutorial >Wie verwende ich die IN-Klausel sicher mit Platzhaltern in SQLite für Android?

Wie verwende ich die IN-Klausel sicher mit Platzhaltern in SQLite für Android?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-18 17:16:09797Durchsuche

How to Safely Use the IN Clause with Placeholders in SQLite for Android?

IN-Klausel und Platzhalter

Frage:

SQLite-Abfragen, die IN-Klauseln mit dynamischer Zeichenfolgenverkettung in Android verwenden, stehen vor den folgenden Herausforderungen:

  • Standardplatzhalter (?) wurden nicht korrekt ersetzt.
  • Das direkte Ersetzen der verketteten Zeichenfolge kann die Abfrage dem Risiko einer SQL-Injection aussetzen.

Lösung:

Um eine IN-Klausel zu parametrisieren, verwenden Sie eine durch Kommas getrennte Folge von Fragezeichen, deren Länge der Anzahl der zu ersetzenden Werte entspricht. Vermeiden Sie die Verwendung externer Daten, um die Gültigkeit dynamischer Zeichenfolgen sicherzustellen.

<code>String[] names = { "name1", "name2" }; // 动态获取值
String query = "SELECT * FROM table WHERE name IN (" + makePlaceholders(names.length) + ")";
Cursor cursor = mDb.rawQuery(query, names);</code>
<code>public static String makePlaceholders(int len) {
    if (len < 1) {
        throw new IllegalArgumentException("Length must be at least 1");
    }
    StringBuilder sb = new StringBuilder(len * 2 - 1);
    sb.append("?");
    for (int i = 1; i < len; i++) {
        sb.append(",?");
    }
    return sb.toString();
}</code>

Dieser Ansatz stellt sicher, dass Platzhalter korrekt ersetzt werden und verhindert SQL-Injection.

Das obige ist der detaillierte Inhalt vonWie verwende ich die IN-Klausel sicher mit Platzhaltern in SQLite für Android?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn