Les requêtes retournant plusieurs jeux de résultats
J'ai un MSSQL
base de données et suis en cours d'exécution de la requête suivante:
select * from projects; select * from user
La requête ci-dessus renvoie à deux ensembles de résultats à la fois, et je ne peut pas tirer deux questions séparément. Comment puis-je gérer à la fois le résultat, à la fois dans une classe Java?
Vous devez vous connecter pour publier un commentaire.
Code Correct pour traiter plusieurs
ResultSet
s retourné par JDBC déclaration:Important bits:
getMoreResults()
etexecute()
retourfalse
pour indiquer que le résultat de l'instruction est juste un nombre et pas uneResultSet
.stmt.getUpdateCount() == -1
savoir si il y a plus de résultats.stmt.getMoreResults(Statement.CLOSE_CURRENT_RESULT)
Vous pouvez utiliser l'Instruction.execute(), getResultSet();
boolean
valeur de retour:true
signifie le résultat suivant est unResultSet
, tandis quefalse
signifie que le prochain résultat est un nombre de mise à jour (ou, lorsque le nombre de mise à jour est-1
, qu'il n'y a pas plus de résultats). Cela peut se produire en particulier sur les serveurs SQL et Sybase) où des ensembles de résultats et de mise à jour de compte ne peut être émise à partir d'une procédure stockée.Oui, Vous le pouvez. Voir cet article MSDN
https://msdn.microsoft.com/en-us/library/ms378758(v=sql.110).aspx
Je l'ai testé et il fonctionne très bien.
boolean
valeur de retour:true
signifie le résultat suivant est unResultSet
, tandis quefalse
signifie que le prochain résultat est un nombre de mise à jour (ou, lorsque le nombre de mise à jour est-1
, qu'il n'y a pas plus de résultats). Cela peut se produire en particulier sur les serveurs SQL et Sybase) où des ensembles de résultats et de mise à jour de compte ne peut être émise à partir d'une procédure stockée.Avant de l'utiliser java, vous avez besoin de regarder le RÉSULTAT DÉFINIT la clause.
MSSQL dispose de cette fonctionnalité qui peut vous aider avec votre code java, de façon pratique.
Cet exemple exec deux requêtes:
Vous pouvez utiliser des procédures stockées avec des ENSEMBLES de résultats en tant que bien.
Plus sur: https://technet.microsoft.com/en-us/library/ms188332(v=sql.110).aspx
L'UNION de requête vous permet de combiner le résultat des ensembles de 2 ou plus "select" des requêtes. Il renvoie toutes les lignes (même si la ligne existe dans plus d'une des déclarations "select").
Chaque instruction SQL à l'intérieur de l'UNION, TOUTES les requêtes doivent contenir le même nombre de champs dans les jeux de résultats avec les mêmes types de données.........
La réponse: c'est PAS possible. Le seul moyen: Exécuter en tant requêtes distinctes.