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
Freigeben: 2024-11-17 14:29:02
Original
811 Leute haben es durchsucht

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();
Nach dem Login kopieren

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 + "%");
Nach dem Login kopieren
  • 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);
Nach dem Login kopieren
  • 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 + "%");
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage