Heim >Java >javaLernprogramm >Wie nutzt man den Platzhalter „like' effektiv bei vorbereiteten Anweisungen?

Wie nutzt man den Platzhalter „like' effektiv bei vorbereiteten Anweisungen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-17 14:29:02815Durchsuche

How to use the

Verwendung des „like“-Platzhalters in vorbereiteten Anweisungen

Vorbereitete Anweisungen bieten eine effektive Möglichkeit, SQL-Abfragen auszuführen, indem sie SQL-Injection-Angriffe verhindern und die Leistung verbessern . Allerdings kann die Integration des „like“-Platzhalters in vorbereitete Anweisungen etwas knifflig sein.

Betrachten Sie die folgende Abfrage, die anhand eines Schlüsselworts nach Zeilen in der „Analyse“-Tabelle sucht:

PreparedStatement pstmt = con.prepareStatement(
      "SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);
ResultSet rs = pstmt.executeQuery();

Um den Platzhalter „like“ bei dieser Abfrage zu verwenden, müssen Sie ihn in den Wert einschließen, der an den Parameter der vorbereiteten Anweisung gebunden wird. Das einfache Hinzufügen von „keyword%“ zu pstmt.setString(1, Notes) reicht nicht aus.

Stattdessen können Sie je nach Bedarf Präfix, Suffix oder globalen Abgleich implementieren:

  • Präfixabgleich: Der Präfixabgleich sucht nach Zeilen, die mit dem Schlüsselwort beginnen. Um dies mit Ihrer Abfrage zu erreichen, verwenden Sie den folgenden Code:
notes = notes
    .replace("!", "!!")
    .replace("%", "!%")
    .replace("_", "!_")
    .replace("[", "![");
PreparedStatement pstmt = con.prepareStatement(
        "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'");
pstmt.setString(1, notes + "%");
  • Suffix-Matching: Suffix-Matching sucht nach Zeilen, die mit dem Schlüsselwort enden. Um dies zu implementieren, ändern Sie den Code wie folgt:
pstmt.setString(1, "%" + notes);
  • Globale Übereinstimmung: Die globale Übereinstimmung sucht nach Zeilen, die das Schlüsselwort an einer beliebigen Stelle im Spaltenwert enthalten. Um einen globalen Abgleich durchzuführen, verwenden Sie den folgenden Code:
pstmt.setString(1, "%" + notes + "%");

Denken Sie daran, Sonderzeichen in der Zeichenfolge „notes“ mit einem Schrägstrich () zu maskieren, um zu verhindern, dass sie den Platzhalter „like“ beeinträchtigen suchen.

Das obige ist der detaillierte Inhalt vonWie nutzt man den Platzhalter „like' effektiv bei vorbereiteten Anweisungen?. 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