[Mysql][JDBC] Votre avis !
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:
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:
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;
}
} |