Dans mon code Java, j'ai deux résultatssets RS1 et RS2 obtenus comme suit:
rs1 = statement.executeQuery("select * from tableA") rs2 = statement.executeQuery("select * from tableB")
4 Réponses :
avec JDBC, vous devrez itérer sur les objets code> des objets code> et comparer chaque champ d'entre eux.
Si vous pouvez le faire avec SQL, alors j'essayerais p> xxx pré>
et p> Les deux doivent renvoyer un résultat vide p> si l'utilisation d'une bibliothèque est une option pour vous, vous pourrait essayer JOOQ (je travaille pour la société derrière JOOQ). Jooq enveloppe de nombreuses fonctionnalités utiles autour de JDBC. Avec JoOQ, vous pouvez exécuter P> ou aussi: p> puis p> if (r1.equals(r2)) {
// the results are equal
}
else {
// the results are not equal
}
RS1 et RS2 ne seront pas les mêmes objets, alors les comparant donc est plutôt insensé. Je suppose que vous voulez comparer le contenu des RÉNÉCHÉRES. P>
Vous pouvez obtenir le schéma de table des métadonnées par rs1.getmeData (). P>
As Rs1 et RS2 sont des objets différents, ils pointent sur différents emplacements de mémoire, par conséquent, la comparaison de RS1 et RS2 n'est pas appropriée, plutôt que vous utilisez, le code ci-dessous: -
while (rs.next()&& rs1.next()) { int userId = rs.getInt("userId") int userId1 = rs1.getInt("userId") if(userId == userId1){ // do some thing } }
userid == userid1 code> souffre du même problème que
rs == RS1 code>, tu ne trouves pas?
Ce code vérifie toutes les colonnes de deux Results, ainsi que le nombre de lignes doit être égal à eux.
Vous ne comparez pas deux objets en utilisant
== code> en java. Vous devez utiliser
.equals () code> à la place.
Si vous souhaitez avoir une différence entre 2 tables, vous devez mettre à jour votre requête comme
SELECT * à partir de tablier, sauf sélectionnez * à partir de tableb code> au lieu de prendre 2 résultats dans les résultats et de les comparer.
Dupliqué possible de Utilitaires de comparaison des résultatss