IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Problème de l'insertion des données dans une base en Java sous NetBeans


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Problème de l'insertion des données dans une base en Java sous NetBeans
    Bonjour,

    j'ai un Jtable qui contient 5 colonnes nom de l'avocat ,cabinet, adresse GSM et tél, lorsque je clique sur la bouton ajouter, les données saisies doivent être insérer dans la base de données, le problème c'est que dans la base la table avocat contient plus que les champs de la jtable le champs
    IdAvocat
    , ce dernier est un clé primaire qui est auto_increment donc je ne doit pas la saisir dans Jtable.

    le code :
    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
    121
    122
    123
    124
    125
    126
    127
    128
    import com.mysql.jdbc.Connection;
    import com.mysql.jdbc.Statement;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import javax.swing.JOptionPane;
     
     
    public class Avocat extends javax.swing.JInternalFrame {
     
        public Avocat() {
            initComponents();
            this.ref();
           }
     
        Avocat(String string) {
            super(string);
            this.initComponents();
           }
     @SuppressWarnings("unchecked")
    //Generated code , sous netbens private void ajouterActionPerformed(java.awt.event.ActionEvent evt) {                                         
                 if(JOptionPane.showConfirmDialog(null,"VOULEZ-VOUS VRAIMENT AJOUTER CET Avocat?",
    		  "CONFIRMATION",JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
     
              int a=jTable2.getSelectedRow();
              System.out.println(" la ligne  "+a);
     
             Object Av=jTable2.getModel().getValueAt(a,0);
             System.out.println("la valeur de '"+a+" et 0' ="+Av);
     
             Object Cab=jTable2.getModel().getValueAt(a,1);
             System.out.println("la valeur de '"+a+" et 1' ="+Cab);
     
             Object Adr=jTable2.getModel().getValueAt(a,2);
             System.out.println("la valeur de '"+a+" et 2' ="+Adr);
     
             Object GS=jTable2.getModel().getValueAt(a,3);
             System.out.println("la valeur de '"+a+" et 3' ="+GS);
     
             Object Tl=jTable2.getModel().getValueAt(a,4);
             System.out.println("la valeur de '"+a+" et 4' ="+Tl);
          try{
     
          Class.forName("com.mysql.jdbc.Driver");
          Connection con=null;
          con =       (Connection) DriverManager.getConnection( "jdbc:mysql://localhost:3306/mabase?user=root&password=");
          Statement st=(Statement) con.createStatement();
     
           st.executeUpdate("insert into Avocat values('"+Av+"','"+Cab+"','"+Adr+"','"+GS+"','"+Tl+"')");
     
           }catch(Exception e)
               {System.out.println(e.toString());
                 }
        }
     
        Object[][] bj=new Object[get_row_log()][5];
        jTable2.setModel(new javax.swing.table.DefaultTableModel(bj,
        new String [] {"Avocat","Cabinet", "Adresse","GSM", "Tél"}
        ));
        jTable2.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {   
       }
       });
     
        }                                        
     
        // Variables declaration - do not modify
        private javax.swing.JButton ajouter;
        private javax.swing.JPanel jPanel2;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JScrollPane jScrollPane2;
        private javax.swing.JTable jTable2;
        // End of variables declaration
     
        public int get_row_log()
     
        {int i=0;
           try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/mabase?user=root&password=");
                Statement st = (Statement) con.createStatement();
                ResultSet rs = st.executeQuery("SELECT * from Avocat");
     
                while(rs.next())
             i++;
         return i;
         }
            catch (Exception e) {
                System.out.println(e.toString());
                return i;
            }
     
    }
         public void ref (){
     
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String urlData=new String("jdbc:mysql://localhost:3306/mabase?user=root&password=");
                java.sql.Connection conn = DriverManager.getConnection(urlData);
                Statement st = (Statement) conn.createStatement();
                String query = "select * from Avocat";
     
                st =        (Statement) conn.createStatement();
               ResultSet rs = st.executeQuery(query);
     
               int m=0;
               while(rs.next()){
     
     
                jTable2.setValueAt(rs.getString("Nom_Prénom") , m, 0);
                jTable2.setValueAt(rs.getString("Cabinet") , m, 1);
                jTable2.setValueAt(rs.getString("Adresse") , m, 2);
                jTable2.setValueAt(rs.getString("GSM") , m, 3);
                jTable2.setValueAt(rs.getString("Tél") , m, 4);
     
                m++;
                }
     
                  st.close();
                  conn.close();
                }
            catch (Exception e) {
            System.out.println(e.toString());
            e.printStackTrace();
            }
     
            }
     
    }
    le résultat après l'exécution :

    run:
    la ligne 2
    la valeur de '2 et 0' =Nabil
    la valeur de '2 et 1' =XXXX
    la valeur de '2 et 2' =France
    la valeur de '2 et 3' =123456
    la valeur de '2 et 4' =null
    java.sql.SQLException: Column count doesn't match value count at row 1

    un coup de main et Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut Reponse
    Si la table dans votre base de données contient 9 champs par exemple, vous n'avez pas le choix, lors de l'insertion d'une ligne, vous devez fournir impérativement 9 valeurs.
    Si parmis ces 9 champs, vous ne voulez pas intervenir sur certains d'entre-eux, ces derniers disposent normalement d'une valeur par défaut. Pour ce qui concerne l'auto-incrémentation, j'en suis absolument certain, il suffit de fournir null pour valeur au champ qui représente l'auto-incrément. Pour ceux dont ce n'est pas le cas, en passant null, il prennent automatiquement leur valeur par défaut. De toute féçon, une table de base de données ne peut pas contenir de lignes dont certains champs n'ont pas de valeur. Ils en ont toujours une, null, ou valeur par défaut mais jamais rien.
    Si dans votre cas précis, seul le champ auto-incrémenté décrit comme étant l'indexe primaire de la table est problématique, et s'il est en première colonne, alors ajoutez simplement (null, valeur1, valeur2, valeur3, valeur4, valeur5) à votre requete d'insertion.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. [MySQL] Problème d'insertion des accents dans une base de donnée MYSQL
    Par maroon1970 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/08/2011, 19h35
  2. Insertion des données dans une base access 2007
    Par guy_antoine_mav dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/11/2009, 22h34
  3. nouveau problême d'insertion des données dans la base de données
    Par tchimou dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/03/2007, 16h32
  4. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 13h17
  5. [C#] problème avec l'insertion des données dans MySQL
    Par madica dans le forum Accès aux données
    Réponses: 7
    Dernier message: 08/11/2005, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo