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:
var stmt = String.format("select * from test where field in (%s)", values.stream() .map(v -> "?") .collect(Collectors.joining(", ")));
PreparedStatement pstmt = connection.prepareStatement(stmt);
int index = 1; for (Object o : values) { pstmt.setObject(index++, o); // Replace with appropriate data type }
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 + ")";
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!