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 :

ResultSet et Statement


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Points : 59
    Points
    59
    Par défaut ResultSet et Statement
    Bonjour,

    Je suis confronté à un problème mais je ne sais pas si l'erreur est normale ou non.
    J'ai créé un objet A de type Statement puis la méthode executeQuery qui est appelée par l'objet A génère un objet B de type ResultSet. Ensuite, je ferme l'objet A par A.close(). Mais la méthode close() semble aussi fermer l'objet B car l'objet B est vide, alors que l'objet B devrait contenir le résultat non nul d'une requête Select.

    Est ce quelqu'un a une explication ou est ce tout simplement normal ?( de plus, même en affectant B à un objet C de type ResultSet avant l'appel de la méthode close(), C devient vide après l'execution du close() )

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut resultset et statement
    Salut,

    Rien de bizarre, la javadoc sur ce point est clair & net :
    "When a Statement object is closed, its current ResultSet object, if one exists, is also closed."

    Source :
    http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Statement.html#close()

    a+
    Xavier

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut
    re,

    Concernant la marche à suivre pour ton développement
    en jdbc, la logique veut qu'en général on fasse :

    une nouvelle connexion
    un statement à partir de la connexion
    executeQuery
    lire les resultset
    close du resultset
    close du statement
    close de la connexion

    voilà, j'espère que cela t'aidera un peu
    a+
    Xavier

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    tiens voici un exemple de code, sauf qu'ici je récupère un datasource, mais ca ne change pas grand chose si tu te connecte directement en début de méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Connection con=null;
    		Statement s=null;
    		ResultSet rs=null;
    		try {
    			//récupération de la Connection depuis le DataSource
    			con = ds.getConnection();
    			s = con.createStatement();
    			rs = s.executeQuery("SELECT * FROM table1");
    			while (rs.next()) {
    				out.println(rs.getString(1) + "      ");
    				out.println(rs.getString(2) + "<br/>");
    			}
    		} catch (SQLException e) {
    			response.sendError(500, "Exception sur l'accès à la BDD " + e);
    		}finally {
    			if (rs != null)
    			{
    				try {
    					rs.close();
    				} catch (SQLException e) {}
    				rs = null;
    			}
    			if (s != null) {
    				try {
    					s.close();
    				} catch (SQLException e) {}
    				s = null;
    			}
    			if (con != null) {
    				try {
    					con.close();
    				} catch (SQLException e) {}
    				con = null;
    			}
    		}
    Avec ce code tu es sur que tout est fermé

Discussions similaires

  1. garbage collector Statement ResultSet
    Par samtheh dans le forum JDBC
    Réponses: 6
    Dernier message: 13/01/2007, 16h34
  2. renseignement sur ResultSet et Statement
    Par baptwo dans le forum JDBC
    Réponses: 2
    Dernier message: 28/08/2006, 14h30
  3. ResultSet et Statement.close()
    Par marti dans le forum JDBC
    Réponses: 1
    Dernier message: 13/04/2006, 17h28
  4. Réponses: 15
    Dernier message: 20/07/2004, 09h09
  5. Réponses: 5
    Dernier message: 28/04/2004, 15h09

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