Maison > Java > javaDidacticiel > Comment utiliser PreparedStatements avec les paramètres de clause Dynamic IN dans JDBC ?

Comment utiliser PreparedStatements avec les paramètres de clause Dynamic IN dans JDBC ?

Patricia Arquette
Libérer: 2024-12-16 03:42:10
original
707 Les gens l'ont consulté

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

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 :

  1. Créez un espace réservé pour chaque valeur dans la clause IN, en utilisant un point d'interrogation (?):
var stmt = String.format("select * from test where field in (%s)",
                         values.stream()
                         .map(v -> "?")
                         .collect(Collectors.joining(", ")));
Copier après la connexion
  1. Préparez l'instruction en utilisant la chaîne construite :
PreparedStatement pstmt = connection.prepareStatement(stmt);
Copier après la connexion
  1. Définissez les valeurs dans la clause IN, un par un, à partir de l'index 1 :
int index = 1;
for (Object o : values) {
    pstmt.setObject(index++, o); // Replace with appropriate data type
}
Copier après la connexion

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 + ")";
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal