Maison > Java > javaDidacticiel > Comment utiliser efficacement PreparedStatement avec une clause IN pour plusieurs valeurs de paramètres ?

Comment utiliser efficacement PreparedStatement avec une clause IN pour plusieurs valeurs de paramètres ?

Barbara Streisand
Libérer: 2024-12-13 03:30:10
original
517 Les gens l'ont consulté

How to Efficiently Use PreparedStatement with an IN Clause for Multiple Parameter Values?

Utilisation de PreparedStatement avec une liste de paramètres de clause IN

Dans JDBC, l'interface PreparedStatement permet l'exécution de requêtes SQL avec des valeurs de paramètres définies dynamiquement. Un scénario courant implique l'utilisation d'une clause IN pour récupérer des données basées sur plusieurs valeurs.

Syntaxe de requête avec une clause IN

La syntaxe suivante montre un exemple de requête utilisant une clause IN :

connection.prepareStatement("Select * from test where field in (?)");
Copier après la connexion

Gestion de plusieurs valeurs

Si la clause IN nécessite plusieurs valeurs, il existe deux approches pour gérer cette situation :

1. Liste connue des paramètres :

  • Construisez une série de points d'interrogation ("?") dans la chaîne de requête, chacun représentant un espace réservé pour une valeur de paramètre.
  • Par exemple :
var stmt = String.format("select * from test where field in (%s)",
                         values.stream()
                         .map(v -> "?")
                         .collect(Collectors.joining(", ")));
Copier après la connexion

2. Liste inconnue des paramètres :

  • Utilisez un StringBuilder pour générer dynamiquement la chaîne d'espace réservé.
  • Pour chaque valeur, ajoutez un point d'interrogation et une virgule.
  • Supprimez la virgule de fin avant de concaténer la chaîne de requête.
  • Pour exemple :
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

Définition des valeurs des paramètres

Une fois la chaîne de requête préparée, définissez les valeurs des paramètres à l'aide de la méthode setObject de PreparedStatement. L'index du paramètre doit être mis à jour pour chaque valeur. Par exemple :

int index = 1;
for( Object o : values ) {
   pstmt.setObject(  index++, o );
}
Copier après la connexion

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