fredou30
Messages postés46Date d'inscriptionvendredi 30 septembre 2005StatutMembreDernière intervention 2 juin 2014
-
22 janv. 2007 à 16:42
fredou30
Messages postés46Date d'inscriptionvendredi 30 septembre 2005StatutMembreDernière intervention 2 juin 2014
-
15 févr. 2007 à 23:06
Bonjour,
j'ai conçu un programme qui permet de gérer des clients grâce à une base de données. Mais il arrive que je perd des séries de clients rentré et je ne comprend pas pourquoi.
Voici le code utilisé pour le chargement des clients en mémoire:
static public void load(){
int compteur = 0;
String url = "jdbc:odbc:gestion";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Variable de connexion
Connection con = null;
//Connexion
con = DriverManager.getConnection(url,"","");
//Création de la requête
Statement requete = con.createStatement();
//Sélection des résultats
ResultSet resultat = requete.executeQuery("SELECT * FROM clients");
con.close();
}catch(SQLException e){
//Erreur de commande
e.printStackTrace();
}
catch(ClassNotFoundException e){
//Erreur lors du chargement du driver
e.printStackTrace();
}
}
Voici le code utilisé pour enregistré les clients dans la base:
static public void write(int indiceWrite){
String url = "jdbc:odbc:gestion";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
//Si erreur lors du chargement du driver
e.printStackTrace();
}
try{
Connection con = null;
//Connexion
con = DriverManager.getConnection(url,"","");
//Création de la requête
Statement requete = con.createStatement();
//Ajout du nouveau client dans la table clients
//On ajoute chaque champs saisie dans la classe Gestion
requete.executeUpdate("INSERT INTO clients (nom,adresse,telBur,telMaison,telCell,dateDernierRV,numDossier,sexe,dateNaissance,ville,codePostal,province,parent) VALUES ('" + Gestion.tabNom[indiceWrite] + "','" + Gestion.tabAdresse[indiceWrite] +
"','" + Gestion.tabTelBur[indiceWrite] + "','" + Gestion.tabTelMaison[indiceWrite] + "','" + Gestion.tabTelCell[indiceWrite] + "','" + Gestion.tabDateDernierRV[indiceWrite] + "','" + Gestion.tabNumDossier[indiceWrite] + "','" + Gestion.tabSexe[indiceWrite] +
"','" + Gestion.tabDateNaissance[indiceWrite] + "','" + Gestion.tabVille[indiceWrite] + "','" + Gestion.tabCodePostal[indiceWrite] + "','" + Gestion.tabProvince[indiceWrite] + "','" + Gestion.tabParent[indiceWrite] + "')");
//Fermeture de la connexion
con.close();
}
catch(SQLException e){
//Erreur de commande
e.printStackTrace();
}
}
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 22 janv. 2007 à 21:04
Salut:
Petite remarque conceptuelle:
-> Tu dois appeler ce code une seule fois.
Donc tu dois le faire dans un bloc static ou au début du main.
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
//Si erreur lors du chargement du driver
e.printStackTrace();
}
__________________________________________________________
A.B. : Je vais apprendre et apprendre et apprendre ....
JBAware
Messages postés174Date d'inscriptionlundi 23 septembre 2002StatutMembreDernière intervention 6 avril 20111 23 janv. 2007 à 19:04
A valider/confirmer tes requetes du genre insert/update/delete.
Tant qu'elles ne sont pas "commitées" les transactions (requetes) ne sont pas enregistrées physiquement dans la base
JB...
Vous n’avez pas trouvé la réponse que vous recherchez ?
helia_5006
Messages postés8Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 6 février 2007 3 févr. 2007 à 13:39
Bonjour,
J'ai exactement le même problème que fredou30.
J'ai donc placé setAutoCommit(true) juste après la connection à la base MySQL. Mais lorsque j'exécute une requête INSERT ou UPDATE, que j'appelle ensuite commit(), JDBC me renvoit une exception me disant que je ne dois pas appeler commi() si AutoCommit est à TRUE.
Ce faisant, j'ai regardé la doc. J' ai passé FALSE à setAutoCommit() à false ; après chaque requête, j'appelle commit(), mais non, rien à faire, les données ne sont pas enregistrées physiquement dans ma base.
fredou30
Messages postés46Date d'inscriptionvendredi 30 septembre 2005StatutMembreDernière intervention 2 juin 2014 15 févr. 2007 à 23:06
Salut je crois que sa ne te sert à rien de faire commit( ) apres chaque requete.
En fesant setAutoCommit( ) il devrait le faire automatiquement, donc pas besoin de la rappeler.
Je crois qu'il est préférable d'utiliser setAutoCommit( ) au lieu de faire commit( ) apres chaque requetes.