J'ai une table comme ci-dessous,
select startTime, endTime from myTable where parent_id = ? and process_name=?
4 Réponses :
Ce n'est pas une bonne pratique d'exécuter une requête dans une boucle. Au lieu de cela, pourquoi n'apprenez-vous pas tous les enregistrements appartenant à un processus donné à la fois. Peut-être utiliser la clause de groupeby pour le nom de process_name avec des fonctions agrégées sur d'autres colonnes [si vous devez effectuer quelque chose sur ces autres colonnes et évitez de faire via le code par vous-même] Une fois que vous avez tous les enregistrements à portée de main, le temps de départ et la durée de fin peuvent être utilisés pour votre traitement ultérieur. P>
espère que cela aide. P>
ne serait-il pas possible de simplement faire: et obtenir les valeurs pour tous les valeurs parent_id code>, puis filtrez ceux de votre liste arraychist code> après? p> p>
Il existe plusieurs approches pour résoudre ce problème:
comme SVend suggéré, car vous avez déjà Une autre approche consiste à préparer une chaîne de code: p> Process_Name code>, vous pouvez obtenir tous les temps de démarrage et de fin pour ce nom de processus. P> LI>
parent_id code> s d'abord, puis interrogez-la à la base de données à l'aide d'une seule requête: p> li>
ol>
op veut éviter la boucle
@Zaynulabadintuhin, op ne veut pas dire qu'il ne veut pas faire de boucle du tout, il ne veut tout simplement pas faire une boucle de requêtes SQL
Je suppose que ce serait mieux en utilisant le formatage ? CODE> de Christian, car ce serait moins d'attaque d'injection ... Bien que cela ne soit pas trop important dans ce cas particulier, car nous contrôlons probablement Ce qui est dans la liste code> ...
comme une légère variation de la solution de @ Prakhar-londhe, vous pouvez également utiliser des paramètres dans la clause , puis ajouter un paramètre pour chaque dans code> comme dans parent_id code>. Bien sûr, vous devez toujours assembler la requête code> (pour mettre un ? Code> à l'intérieur des parenthèses pour chaque parent_id code>) ainsi que la liste des paramètres dans une boucle. p> p>
Parent_ID est-il stocké dans une table? Si oui, vous pouvez effectuer une jointure.
Pourquoi tu as besoin de boucle? Vous pouvez simplement filtrer par PROCESS_NAME