Insertion base de données MySQL avec java

Résolu
bakloutimarou - 15 févr. 2013 à 15:59
 M_R - 13 févr. 2020 à 11:45
Bonjour,
je veux insérer des données dans ma table MySQL.J'ai écrit le code suivant mais ça marche pas:
package com.controle.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class connectio {
public static void main(String[] args) throws Exception {
String url = "com.mysql.jdbc.Driver";
Connection con = null ;
try {

System.out.println("Connection au driver JDBC");
//moyPaiement=txtmoy.getSelectedText();
Class.forName(url);
System.out.println("Chargement du pilote Mysql réussi");

con = DriverManager.getConnection("jdbc:mysql://localhost:3306/controle_indiciaire","marouen","97480934");
//insertion
String str = "insert into controleindiciaire(id,N°Comptes,Debit,Credit) VALUES (?,?,?,?)";
PreparedStatement stmt = con.prepareStatement(str);
stmt.setInt(1,1);
stmt.setInt(2,987456);
stmt.setDouble(3,152.05);
stmt.setDouble(4,152.05);
stmt.executeUpdate(str);
con.commit();
System.out.println("ligne insérée");
con.close();
//System.out.println(str+" ligne insérée");
}
catch(ClassNotFoundException cnfe){
System.out.println("Driver introuvable : ");
cnfe.printStackTrace();
}
catch(SQLException sqle){
System.out.println("Erreur SQL : ");
//Cf. Comment gérer les erreurs ?
}
catch(Exception e){
System.out.println("Autre erreur : ");
e.printStackTrace();
}
finally
{
if(con!=null){try{con.close();}catch(Exception e){e.printStackTrace();}}
//etc.
}}}
la console affiche
Connection au driver JDBC
Chargement du pilote Mysql réussi
Erreur SQL :
merci de m'aider.

9 réponses

alvinemambele
Messages postés
72
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
31 mai 2013
15
19 févr. 2013 à 18:30
je m'excuse, voici le deux partie du code qui t’intéresse

private class SauverEnBase{
        String myUrl="";
        String myUser = "";
        String myPwd ="";
        String Data="";
        private Connection cn=null;
        //Statement st=null;
        private java.sql.Statement st = null;

        private SauverEnBase(String url, String user, String password){
            this.myUrl=url;
            this.myUser=user;
            this.myPwd=password;
        }
        
        private Boolean Connect(){
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                this.cn = DriverManager.getConnection("jdbc:mysql:"+this.myUrl, this.myUser, this.myPwd);
                this.st = this.cn.createStatement();
                return true;
            } catch (SQLException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
            //Class.forName("com.mysql.jdbc.Driver").newInstance();
            return false;
        }
        
        private ResultSet Execut (String SqlString){
            try {
                ResultSet rs = this.st.executeQuery(SqlString);
                return rs;
            } catch (SQLException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }
        
        private int myUpdate (String SqlString){
            try {
                int rs = this.st.executeUpdate(SqlString);
                return rs;
            } catch (SQLException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
            return 0;
        }
        
        private void Close(){
            try {
                this.st.close();
                this.cn.close();
            } catch (SQLException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        
    }


cette partie vous permet d'appeler la classe et faire votre insertion

SauverEnBase mysqlCli = new SauverEnBase("//localhost/psbase", "root", "");
            if (mysqlCli.Connect()) {
               int rs = mysqlCli.myUpdate("INSERT INTO devises (Libelle_Devise, Pays_Devise, Taux_Tevise) VALUE ('USD', 'USA', 919)");
            } else {
                System.out.println("Mysql connection failed !!!");
            }
        mysqlCli.Close();


Un orateur trop long est comme une horloge qui sonne les minutes!
3
alvinemambele
Messages postés
72
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
31 mai 2013
15
20 févr. 2013 à 14:35
mon ami, si la réponse te satisfais, veuillez cliquer sur le bouton réponse acceptée...
merci.

Un orateur trop long est comme une horloge qui sonne les minutes!
1
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
18 févr. 2013 à 08:46
Salut,

Il est plus intéressant d'avoir la trace de l'erreur plutot qu'un message que tu affiches, donc remplaces :
catch(SQLException sqle){ 
   System.out.println("Erreur SQL : "); 
   //Cf. Comment gérer les erreurs ? 
}

par

catch(SQLException sqle){ 
   sqle.printStackTrace(); 
}


Et là, on verra ce qui pose problème.
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
18 févr. 2013 à 08:47
Tant que tu y es, enlèves les catch de classnotfoundexception et mets un printSatckTrace sur toutes les exceptions que tu catches, ce sera plus propre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alvinemambele
Messages postés
72
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
31 mai 2013
15
19 févr. 2013 à 18:28
voici ma classe qui va t permettre de bien faire l'action voulu
essayer de remplacer là où ça te concerne et ça va marcher...

private class SauverEnBase{
        String myUrl="";
        String myUser = "";
        String myPwd ="";
        String Data="";
        private Connection cn=null;
        //Statement st=null;
        private java.sql.Statement st = null;

        private SauverEnBase(String url, String user, String password){
            this.myUrl=url;
            this.myUser=user;
            this.myPwd=password;
        }
        
        private Boolean Connect(){
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                this.cn = DriverManager.getConnection("jdbc:mysql:"+this.myUrl, this.myUser, this.myPwd);
                this.st = this.cn.createStatement();
                return true;
            } catch (SQLException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
            //Class.forName("com.mysql.jdbc.Driver").newInstance();
            return false;
        }
        
        private ResultSet Execut (String SqlString){
            try {
                ResultSet rs = this.st.executeQuery(SqlString);
                return rs;
            } catch (SQLException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }
        
        private int myUpdate (String SqlString){
            try {
                int rs = this.st.executeUpdate(SqlString);
                return rs;
            } catch (SQLException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
            return 0;
        }
        
        private void Close(){
            try {
                this.st.close();
                this.cn.close();
            } catch (SQLException ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        
    }



Un orateur trop long est comme une horloge qui sonne les minutes!
0
bakloutimarou
19 févr. 2013 à 19:02
Merci pour votre aide . Problème résolu.
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
27 févr. 2013 à 16:09
Bonjour,

J'interviens peut être un peu tard mais il y a pas mal de maladresses dans ton code alvinemambele, en particulier sur la signature des méthodes : return 0 ou return null, ce n'est pas terrible, il est préférable dans ce cas, d'utiliser des void.

Plutôt que Boolean, utilises le type primitif boolean

L'initialisation ="" systématique ne sert pas à grand chose sauf à encombrer la JVM

Réimplémenter update en myUpdate, ce n'est pas terrible, surtout que le code retour est systématiquement 0

Attention au catch des RuntimeException comme classnotfound

Les conventions d'écriture en java ne sont pas respectées.

Après, ce sont uniquement des maladresses donc le résultat est ok et si bakloutimarou a corrigé, tout va bien.
0
Bonjour,
je suis débutant en Java. je veux juste que vous m'expliquer ceci: "insert into 'éditeur' ('nom_éditeur') values ('"+nom"');
éditeur fait référence à quoi?
nom éditeur fait aussi référence à quoi?
merci.
0
éditeur fait référence une table
0