Tester une connexion Java/MySQL

Signaler
Messages postés
6
Date d'inscription
vendredi 21 novembre 2008
Statut
Membre
Dernière intervention
3 mai 2010
-
 Alix.D -
Bonjour,

Je débute avec le JDBC, je sais établir une connexion faire des opérations sur les bases et fermer la connexion, mais je le problème, c'est quand la base de donnée n'est pas accessible, je voudrais gérer cette exception.

C'est pourquoi je pose cette question, serait-il possible de m'expliquer comment faire pour savoir si la connexion à la base de donnée est possible ou pas ? (en attendant, j'ai trouvé une parade mais c'est long à faire la recherche )

Merci

4 réponses

Messages postés
46
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2010
4
try {
Class.forName("com.mysql.jdbc.Driver");
connection = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1/test");
} catch (ClassNotFoundException e) {
System.out.println(e);
} catch (SQLException e){
System.out.println(e);
}
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
9 mars 2012

Bonjour,

J'ai le même probleme sauf qur voilemiss avec ton code tu recré une instance de connexion du coup si tu regarde tes process tu doit avoir plein postgre.exe qui tourne si tu fais plein de test avec ton appli!! Pas bon du tout!
Messages postés
5
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
9 mars 2012

Sa y est j'ai réussis

Là où tu teste la connexion

if(Connection_Db.isValid(Connection_Db.getInstance())==false) 
{
  connect=false;
  throw new SQLException();
}
else
{
  connect=true;							
  commHandler.logger.info("Connection Data Base Sucess");
}


La fonction is Valid permet de pinguer ton serveur DB

public static boolean isValid(Connection connection){
   if(connection==null){
      return false;
   }
   ResultSet ping = null;
   try{
      if(connection.isClosed()){return false;}
      ping = connection.createStatement().executeQuery("SELECT 1");
      return ping.next();
   }catch(SQLException sqle){
      return false;
   }
   finally{
      if(ping!=null){try{ping.close();}catch(Exception e){}}
   }  
}


Et cette fonction peremet de retourner une instance de connection! J'ai utiliser un pattern singleton

public class Connection_Db{

/**
 * URL de connection
 */
private static String url = "jdbc:postgresql://localhost:543/test";
/**
 * Nom du user
 */
private static String user = "postgres";
/**
 * Mot de passe du user
 */
private static String passwd = "toto";
/**
 * Objet Connection
 */
private static  Connection connect;


/**
 * Méthode qui va nous retourner notre instance
 * et la créer si elle n'existe pas...
 * @return
 * @throws SQLException 
 */
public static Connection getInstance() throws SQLException{
if(connect == null){
connect = DriverManager.getConnection(url, user, passwd);	
}	
else
{
if(!isValid(connect))
{
connect.close();
connect = DriverManager.getConnection(url, user, passwd);
}
}
return connect;	

}


public static boolean isValid(Connection connection){
   if(connection==null){
      return false;
   }
   ResultSet ping = null;
   try{
      if(connection.isClosed()){return false;}
      ping = connection.createStatement().executeQuery("SELECT 1");
      return ping.next();
   }catch(SQLException sqle){
      return false;
   }
   finally{
      if(ping!=null){try{ping.close();}catch(Exception e){}}
   }  
}	
}


}
Pour la vérification de connection : Connection_Db correspond à quoi ?