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 :

garbage collector Statement ResultSet


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Points : 123
    Points
    123
    Par défaut garbage collector Statement ResultSet
    Bonjour à tous,

    J'ecris une fonction comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                            ResultSet rs_results=null;
    		        Statement stmt = null; 
     
                            stmt = cx.createStatement();
    			rs_results = stmt.executeQuery(s_query);
     
    			return rs_results;
    En réalisant cela je ne peux utiliser les méthodes Close() des objets stmt et rs_results. Dans le cas d'utilisation de tres grosse base de données, je pense que cela peut vite faire bugger mon programme. Comment fermer proprement ces objets ?

    Je vous remercie des éléments de réponses que vous pourrez me fournir.

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    http://java.developpez.com/faq/jdbc/...tureConnection

    Poue les statement et les resultset c'est la même chose, d'ailleurs tu n'est censé avoir ouvert la connexion que le temps de faire une requête, ensuite il faut la fermer

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Points : 123
    Points
    123
    Par défaut
    Je ne comprend pas vraiment ta réponse. Je sais que pour les statement et ResultSet c'est la même chose, je me demande juste comment fermer proprement alors que je fais un return ?

    Oui je ferme ma connection directement apres.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Points : 123
    Points
    123
    Par défaut
    Idée :

    Je passe mes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            protected ResultSet rs_results=null;
    	protected Statement stmt = null;
    en données membres de ma classe et je crée une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void Close(){
    		// fin de la connexion	
    		try{if(this.rs_results!=null){this.rs_results.close();}}catch(Exception e){System.out.println("SQL exrs"+e.getMessage());}
    		try{if(this.stmt!=null){this.stmt.close();}}catch(Exception e){System.out.println("SQL exstmt"+e.getMessage());}
    		try {if (this.cx!=null) {this.cx.close();}}catch (SQLException e){System.out.println("SQL excnt"+e.getMessage());}
    	}
    Qu'en pensez vous ? En faisant cela, dans ma méthode ou j'ai mon return, je ne perd pas mon objet statement et ResultSet dans la nature, je les fermes correctement dans la méthode close nan ?

    Merci de votre aide.

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En fait ton resultSet ne doit pas transiter dans ton application. Tu dois mettre les données dans un autre contenur pour les utiliser dans ton application.

    Donc ton return ne dois pas renoyer un ResultSet mais une liste de données ou que ne sais-je d'autre

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Points : 123
    Points
    123
    Par défaut
    Oui c'est ce que j'avais pensé faire,

    Mais comment utiliser quelque chose qui sera la plus dynamique possible.
    Je veux dire par la, comment faire pour qu'une requete quelquonque sur n'importe quelle table, sur n'importe quel nombre de colonne soit exploitable par une collection ???

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Penches toi sur les ResultSetMetaData qui permettent d'obtenir des infos sur le ResultSet obtenu en passant par la méthode getMetaData de ton ResultSet.

Discussions similaires

  1. [JVM]Garbage collector
    Par godik dans le forum Général Java
    Réponses: 5
    Dernier message: 07/10/2005, 09h12
  2. JPanel et Garbage Collector
    Par tck-lt dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 25/07/2005, 18h03
  3. [JVM] les objets et le Garbage collector
    Par Kurdran dans le forum Général Java
    Réponses: 7
    Dernier message: 02/06/2005, 16h57
  4. [Language]Garbage collector
    Par GETah dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2005, 15h18
  5. Réponses: 15
    Dernier message: 20/07/2004, 09h09

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