IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Utiliser plusieurs fois un objet d'un ResultSet


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Utiliser plusieurs fois un objet d'un ResultSet
    Bonjour bonjour!!!

    Voila mon probleme actuel: je me connecte a une BDD, tout ce qu'il y a de lus normal, je fais mon ResultSet, mais je me suis aprecu qu'il m'etait impossible de reutiliser plusieurs fois les valeurs des champs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM datatable");
    rs.next();
    System.out.println(rs.getString("column1"));
    System.out.println(rs.getString("column2"));
    System.out.println(rs.getString("column1"));
    Il me fait une erreur: java.sql.SQLException: No data found
    Si j'enleve la derniere ligne: aucun probleme.

    J'ai aussi essayer de changer les parametres du statement: rien ne change.

    J'ai aussi essaye de toucher a la "holdability" (setHoldability, declaration dans le createStatement etc) (je sais pas trop ce que c'est, mais j'ai pas grand chose a perdre), mais toutes les fonctions me renvoient une erreur: java.lang.UnsupportedOperationException at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(UnknownSource) (dans le cas ou je declare dans le createStatement bien sur).

    Je compte sur vos lumieres... Merci par avance!!!

  2. #2
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, en général on créé une classe qui correspond plus ou moins à la représentation d'une table de la BDD. Cette classe aurait pour attribut String column1 et String column2. Et quand tu lis le resultSet, tu instancies une nouvelle instance de cette classe en la remplissant par les différentes valeurs lues dans le resultSet. Ainsi tu pourras réutiliser ta classe à volonté.

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Merci bien!
    Ca ne devrait pas etre tres difficile a faire...
    Ca m'etonne juste qu'il n'y ait rien d'automatique pour realiser ca!

  4. #4
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Sinon il faut utiliser Hibernate, un framework qui fait du mapping BDD-Objets. Il gère lui même les accès à la base et cela est transparent pour toi, plus besoin de faire de requêtes SQL et d'utiliser les resultset. Mais il faut du temps pour le prendre en main. (il y a un forum dédié )

  5. #5
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Bizarre, bizarre !!!

    comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM datatable");
    rs.next();
    String s1 = rs.getString("column1");
    String s2 = rs.getString("column2");
    rs.close;
    stmt.close;
     
    // ensuite afficher s1, s2, encore s1...
    ce code n'est pas testé, c'est juste pour l'idée (au cas où j'aurais compris la question)

    bonne chance !

  6. #6
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Oui oui, comme ca ca fonctionne... j'utilise d'ailleurs deja cette astuce quand je peux. Mais la c'est pour utiliser dans une boucle en fait, donc j'ai vraiment besoin d'utiliser plusieurs fois le meme resultat!

  7. #7
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Même dans une boucle tu peux faire comme on t'a dit. Où est le problème? pourrais-tu donner un exemple concret?

  8. #8
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Oui oui, au temps pour moi... Vous avez parfaitement raison: il me suffit d'utiliser une sorte de variable locale, je n'y avais pas pensé! Ca sera beaucoup plus facile que d'implémenter une nouvelle classe pour stocker mes valeurs!

    Reste un unique problème: j'ai une erreur à la lecture de mon ResultSet (cf le nouveau message que j'ai posté "Erreur au milieu de la lecture d'un ResultSet")

    Merci pour votre aide en tout cas!

Discussions similaires

  1. Utiliser plusieurs fois ma classe en même temps
    Par Princeless74 dans le forum C++
    Réponses: 6
    Dernier message: 05/01/2008, 21h54
  2. Réponses: 7
    Dernier message: 21/09/2007, 15h26
  3. Réponses: 5
    Dernier message: 24/08/2006, 15h00
  4. Réponses: 2
    Dernier message: 22/05/2006, 14h08
  5. Réponses: 5
    Dernier message: 05/01/2006, 18h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo