6
votes

Comparaison des résultats dans JDBC

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


3 commentaires

Vous ne comparez pas deux objets en utilisant == en java. Vous devez utiliser .equals () à 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 au lieu de prendre 2 résultats dans les résultats et de les comparer.


Dupliqué possible de Utilitaires de comparaison des résultatss


4 Réponses :


5
votes

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> xxx pré>

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> xxx pré>

ou aussi: p> xxx pré>

puis p>

if (r1.equals(r2)) {
    // the results are equal
}
else {
    // the results are not equal
}


0 commentaires

0
votes

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.

Vous pouvez obtenir le schéma de table des métadonnées par rs1.getmeData ().


0 commentaires

0
votes

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
  }

}


1 commentaires

userid == userid1 souffre du même problème que rs == RS1 , tu ne trouves pas?



5
votes

Ce code vérifie toutes les colonnes de deux Results, ainsi que le nombre de lignes doit être égal à eux. XXX


0 commentaires