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 :
var stmt = String.format("select * from test where field in (%s)", values.stream() .map(v -> "?") .collect(Collectors.joining(", ")));
2. Liste inconnue des paramètres :
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!