Bonjour,

J'ai réalisé un programme et je voudrais savoir si l'utisation de mon driver JDBC est correcte, et mes accès à la base de données sont bons !?
Ma question pour être plus précis est de savoir si le fait de :

- créer une connexion
- Exécuter ma requête
- fermer ma connexion
- recréer ma connexion
- Exécuter une autre requête
- refermer la connexion
- ainsi de suite .....

Est ce que cela ne pose aucun problème.?
Est-ce que vous faites comme ça?
Et dans le cas où vous faites comme ça, est ce que sous windows ça pose un problème lorsque que l'on fait beaucoup d'accés à la Bdd en peu de temps (comme par exemple une erreur de connexion à la socket ?)


Voilà comment j'ai fait :

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
 
public class GestionCompte extends JDialog{
	private Compte compte = null;
	private static GestionCompte instance = null;
	private BaseDeDonnees bdd = new BaseDeDonnees();
 
	private GestionCompte()
	{
		super();
	}
 
	public static GestionCompte getInstance()
	{
		if(instance == null)
			instance = new GestionCompte();
		return instance;
	}
 
                  public Compte getCompte(String numCompte)
	  {
	  	String requete = "SELECT * "+
						"FROM Compte "+
						"WHERE NumCompte = '" + numCompte.replaceAll("'", "''") + "'";
 
	  	ResultSet rs_Result = bdd.executeRequete(requete);
	  	if(rs_Result == null)
		{
			GestError.getInstance().afficheLastErreur();
			bdd.closeConnexion();
			return null;
		}
	  	try {
	  		while(rs_Result.next())
	  		{
 
	  			Compte cpt =  getCompte(rs_Result);
	  			bdd.closeConnexion();
	  			return cpt;
	  		}
	  		//System.out.println(rs_Result.getFetchSize());
	  	} catch (SQLException e) {
	  		GestError.afficheErreur(this, e.getMessage(), GestError.INT_ERROR_MSG);
	  		bdd.closeConnexion();
	  		return null;
	  	}
	  	bdd.closeConnexion();
	  	return null;
	  }
}
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 
**********************
           BDD
***********************
 
public BaseDeDonnees ( ) {
 
		// Paramètres de connexion
  		// Adresse de la machine
  		adresse = getAdresse(); // getadresse() -> renvoie <adresse>:3306
  		nomBdd = "Semdb";
		// Driver de connexion à la base de données
		url ="jdbc:mysql://" + adresse + "/" + nomBdd;
		// login de connexion à la bdd
		login = "sem";
		// Mot de passe de connexion
		password = "sem";
 
		// Initialisation de l'erreur
		str_Erreur = null;
 
		// Etablissement de la connexion
		try {
			//Instanciation du driver de connexion à la bdd
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			//Impossible de trouver le driver
			GestError.afficheErreur(this, e.getMessage(), GestError.INT_ERROR_MSG);
		}
  }
 
  private static String getAdresse()
  {
  	FileDOM fileDOM = new FileDOM();
  	Document doc = null;
  	try{
  		doc = fileDOM.loadXML("Param/host");
  	}catch(FileNotFoundException fnfe)
	{
  		GestError.afficheErreur(new MaJDialog(), "Le fichier host n'existe pas !", GestError.INT_INFORM_MSG);
  		return null;
	}
  	if( doc == null)
	{
		return null;
	}
	Element root = doc.getRootElement();
 
	return root.getValue();
  }
 
 /* // Recupère l'instance de la classe
  public static BaseDeDonnees getInstance()
  {
		if (null == instance) { // Premier appel
				// on crée l'instance
				instance = new BaseDeDonnees();
		}
		// On renvoie l'instance de la classe
		return instance;		
  }*/
 
 
public boolean closeConnexion()
{
	try {
		  if(res!=null){res.close();}
		  if(st!=null){st.close();}
		  if(conn!=null){conn.close();}
		//  System.err.println("Déconnexion");
	} catch (Exception e) {
		// TODO Auto-generated catch block
		GestError.afficheErreur(this, "Impossible de fermer la connexion à la base de données", GestError.INT_ERROR_MSG);
		return false;
	}
	return true;
}
   /**
   * 
   * @param str_Requete 
   * 
   * Exécute la requête et récupère le résultat sous la forme d'un résultSet
   */
  public ResultSet executeRequete ( String str_Requete) {
	if(!connexionBdd())
 		return null;
	try {
		// executer une requete
		res = st.executeQuery(str_Requete);
	} catch (SQLException e) {
		str_Erreur = "Impossible d'exécuter la requête\nVérifier la syntaxe de la requête!";
		str_Erreur += e.getMessage();
		GestError.getInstance().setLastMsgErreur(str_Erreur);
		System.out.println(str_Erreur);
	}
 
	  return res;
  } 
 
 
  public boolean connexionBdd()
  {
  	//Etablissement de la connexion
  	try {
  		//Connexion à la bdd
  		conn = DriverManager.getConnection(url, login, password);
  		//System.err.println("Connexion");
  		//Creation du statement
  		st = conn.createStatement();
  	} catch (SQLException e) {
  		str_Erreur = "Impossible de se connecter à la base de données\n";
  		str_Erreur += "Error :"+e.getMessage()+"\nSi le problème persiste, veuillez contacter l'administrateur...";
  		//System.err.println(str_Erreur);
  		GestError.afficheErreur(this, str_Erreur, GestError.INT_ERROR_MSG);
  		System.exit(-1);
  		return false;
  	}
  	return true;
  }
}