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
Barbara Streisandoriginal
2024-12-13 03:30:10520parcourir

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 (?)");

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(", ")));

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 + ")";

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 );
}

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!

Déclaration:
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