Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de recuperation des donnees depuis la BD

Recuperation de donnee depuis 2 tables

Sujet résolu
    4 juillet 2020 à 1:36:47

    Bonjour.

    J'arrives pas a recuperer correctement les donnees depuis ma bd. Il n'affiche pas les colonnes que je lui demandes, pourtant la requete fonctionne bien quand je le fais sur PgAdmin.

    Ca c'est ma requette.

    select users.id, users.prenom, users.nom, programme.nom FROM users 
    INNER JOIN programme ON programme.id = users.programme_id WHERE users.id_privilege = 0 and CAST(users.programme_id as varchar) = ?


    Et mon code pour la recuperation

    static private final User[] getById(String query,  String... stringParams) {
    		ArrayList<User> users = new ArrayList<>();
    		try {
    			PreparedStatement ps = DBConnexion.getPs(query);
    			if (stringParams != null)
    				for (int i = 0; i < stringParams.length; i++)
    					ps.setString(i + 1, stringParams[i]);
    			ps.executeQuery();
    			ResultSet rs = ps.getResultSet();
    			while (rs.next())
    				users.add(new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4)));
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		DBConnexion.close();
    		User[] u = new User[users.size()];
    		return users.toArray(u);
    	}

    Et au lieu de m'afficher l'id, le nom, le prenom, le nom(de la table programme) comme demandé, il m'affiche les 3 premieres colonnes demandées et remplace le 4eme par deux donnees qui ne font pas parties de ma requete. Je ne sais pas pourquoi. J'avais mis le nom des colonnes a la place des numeros, le resultat etatit toujours le meme.

    Quelqu'un sait d'ou vient le probleme ?

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2020 à 14:17:57

      Bonjour,

      Tu demande à ton programme java de récupérer les résultats de ta requête et de les insérer dans des entités User, puis tu regardes ces entités via java, du coup java te renvois des Users. Mais toi tu cherches un objet qui aurait des attributs de Users et de Programme.

      Du coup si tu veux récupérer ce genre d'objet , il te faut soit le créer (exemple UserWithProgrammeName (Long id, String prenom, String nom, String nomProgramme)    ) , soit il va te falloir dispatcher les résultats de ta requête entre des Users et des Programmes puis les afficher en faisant le lien entre eux.

      Il ne te faut pas confondre tes entités (gérés en java) et tes résultats de requête SQL (qui en cas de JOIN ne correspondent plus à une entité).

      Bonne journée

      • Partager sur Facebook
      • Partager sur Twitter
        5 juillet 2020 à 15:20:20

        Merci beaucoup ! Ca marche maintenant !
        • Partager sur Facebook
        • Partager sur Twitter

        Probleme de recuperation des donnees depuis la BD

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown