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 :

Gestion connexion BDD


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 50
    Points
    50
    Par défaut Gestion connexion BDD
    Bonjour,

    Je souhaiterai soumettre mon code à votre avis.

    J'ai mon programme JAVA qui se connecte à la BDD dont voici le code de connexion:

    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
    public class Connexion_BDD{
     
    	private static String url = "*********";
    	private static String user = "*******";
    	private static String passwd = "******";
    	private static Connection connect;
     
    	// Méthode pour se déconnecter à la bd 
        public static Connection close() {
            try {
            	if (connect!=null){
            		connect.close();
            		//System.out.println("Fermer " + connect);
            		connect=null;
            	}
            } catch (SQLException e) {
                e.printStackTrace();
            }
    		return connect;
        }
    public static Connection IdConnect() {
    	try {
    		connect = DriverManager.getConnection(url, user, passwd);
    	} catch (SQLException e) {
    		JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR DE CONNEXION ! ", JOptionPane.ERROR_MESSAGE);
    	}
    	return connect;
    }
    }
    Pour contrer l'erreur de la connexion fermer, je raisonne de la manière suivante à chaque requête: J'ouvre et je ferme à chaque requête

    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
     
    PreparedStatement preparedStatement =null;
    		ResultSet rs=null;
    		try 
    		{	
                            //Ouvre la connexion	
    			connection=Connexion_BDD.IdConnect();
     
    			preparedStatement = connection
    			.prepareStatement("INSERT INTO EntreTrainEntite (NumET,NumE,ObservationET) VALUES(?,?,?) ; ");
    			preparedStatement.setInt(1,NumET) ;
    		       preparedStatement.setInt(2,1) ;
    		       preparedStatement.setString(3,getObservation()) ;
    			preparedStatement.executeUpdate();
     
                         //Ferme la connexion
                          Connexion_BDD.close();
     
    		}
     
    		catch (SQLException e) {
    			//TODO Auto-generated catch block
    		    e.printStackTrace();
     
    		finally{  
    		   try{if(connection!=null){connection.close();}}catch(Exception e4){} 
    		}
    	}
    Je vais avoir une dizaine d'utilisateurs de l'appli qui devront se connecter à la bdd avec le même identifiant.

    Je rencontre de temps en temps l'erreur "Socket closed" ce qui annule l'exécution de ma requête.

    Comment je peux éviter la fermeture des connexions pendant l’exécution?

    Merci d'avance!

    Maxime.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est une très mauvaise idée de mettre ton objet Connection dans ta classe utilitaire, et surtout en "static" !
    Dans ton cas, il n'y a qu'une et une seule connexion pour ta jvm. Si c'est une application web, autant dire que ça risque de faire "short"

    Ce que je te conseille, c'est de faire une classe utilitaire qui s'occupe de renvoyer un objet Connection, charge à tes méthodes utilisatrices de gérer l'objet.
    Cette classe utilitaire pourrait s'occuper de fermer les différents types d'objets (pour éviter d'avoir à catcher ou gérer les objets null)...
    Ce serait un truc dans ce genre
    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
     
    Connection connection = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try
    {
       connection = MaClasseUtilitaire.getConnection();
       pstmt = connection.prepareStatement("...");
       rs = pstmt.executeQuery();
       ...
    }
    catch (Exception e)
    {
       ...
    }
    finally
    {
       MaClasseUtilitaire.close(rs);
       MaClasseUtilitaire.close(pstmt);
       MaClasseUtilitaire.close(connection);
       // OU
       try { rs.close(); } catch (Exception e) {}
       try { pstmt.close(); } catch (Exception e) {}
       try { connection.close(); } catch (Exception e) {}
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 50
    Points
    50
    Par défaut
    Merci de la réponse!

    Je vais tenter ta proposition.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion exception connexion BDD
    Par Aizen64 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/02/2008, 21h43
  2. Gestion de bdd MySql
    Par carlito dans le forum Débuter
    Réponses: 2
    Dernier message: 30/03/2004, 14h54
  3. pb de connexion bdd
    Par picoti2 dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/03/2004, 18h53
  4. [BCB6] DBGrid et mode de connexion BDD... demain
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/01/2004, 13h56

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