Utilisation de PreparedStatement avec les paramètres de la clause IN
Question :
Comment pouvez-vous remplir un formulaire préparé instruction dans JDBC avec une liste de paramètres dans une clause IN ? Ceci est particulièrement important lorsque la liste des paramètres peut ne pas être connue à l'avance.
Solution :
Pour construire dynamiquement une clause IN avec plusieurs valeurs, suivez ces étapes :
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 }
Cette approche permet de gérer des paramètres multiples ou inconnus dynamiquement.
Solution alternative utilisant 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 + ")";
Suivez les mêmes étapes que ci-dessus pour préparer l'instruction et définir les valeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!