Heim > Java > javaLernprogramm > Wie verwende ich PreparedStatements mit dynamischen IN-Klauselparametern in JDBC?

Wie verwende ich PreparedStatements mit dynamischen IN-Klauselparametern in JDBC?

Patricia Arquette
Freigeben: 2024-12-16 03:42:10
Original
707 Leute haben es durchsucht

How to Use PreparedStatements with Dynamic IN Clause Parameters in JDBC?

Verwenden von PreparedStatement mit IN-Klauselparametern

Frage:

Wie können Sie ein vorbereitetes Statement füllen? Anweisung in JDBC mit einer Liste von Parametern in einer IN-Klausel? Dies ist besonders wichtig, wenn die Liste der Parameter möglicherweise nicht im Voraus bekannt ist.

Lösung:

Um eine IN-Klausel mit mehreren Werten dynamisch zu erstellen, befolgen Sie diese Schritte:

  1. Erstellen Sie für jeden Wert in der IN-Klausel einen Platzhalter, indem Sie ein Fragezeichen verwenden (?):
var stmt = String.format("select * from test where field in (%s)",
                         values.stream()
                         .map(v -> "?")
                         .collect(Collectors.joining(", ")));
Nach dem Login kopieren
  1. Bereiten Sie die Anweisung mit der konstruierten Zeichenfolge vor:
PreparedStatement pstmt = connection.prepareStatement(stmt);
Nach dem Login kopieren
  1. Legen Sie die Werte in der IN-Klausel fest. nacheinander, beginnend mit Index 1:
int index = 1;
for (Object o : values) {
    pstmt.setObject(index++, o); // Replace with appropriate data type
}
Nach dem Login kopieren

Mit diesem Ansatz können Sie mehrere oder unbekannte Parameter verarbeiten dynamisch.

Alternative Lösung mit StringBuilder:

List<String> values = ...;
StringBuilder builder = new StringBuilder();

for (int i = 0; i < values.size(); i++) {
    builder.append("?,");
}

String placeHolders = builder.deleteCharAt(builder.length() - 1).toString();
String stmt = "select * from test where field in (" + placeHolders + ")";
Nach dem Login kopieren

Folgen Sie den gleichen Schritten wie oben, um die Anweisung vorzubereiten und die Werte festzulegen.

Das obige ist der detaillierte Inhalt vonWie verwende ich PreparedStatements mit dynamischen IN-Klauselparametern in JDBC?. 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