Bonjour tout le monde.

Je développe mon application en java et mysql et j'ai un souci à l'exécution voici le message d'erreur :
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:648)
at gci.fen.FenClient.ListerClient(FenClient.java:46)
at gci.fen.FenClient.<init>(FenClient.java:29)
at gci.fen.FenClient$2.run(FenClient.java:256)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
J'ai créé un package qui permet la connexion à ma base de données et de faire certaine exécution le voici:
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
package gci.dao;
 
import java.sql.*;
/**
 *
 * @author PI
 */
public class Module {
    String driver="com.mysql.jdbc.Driver";
    String url="jdbc:mysql://localhost/gci";
    String usr="root";
    String pswd="%admin%";
 
    public ResultSet lister(String cad){
        try{
            Class.forName(driver);
            Connection cnx=DriverManager.getConnection(url, usr, pswd);
            PreparedStatement ps=cnx.prepareStatement(cad);
            ResultSet tbl=ps.executeQuery();
            return tbl;
        }
        catch(Exception e){
            javax.swing.JOptionPane.showMessageDialog(null, e.getMessage(), "Erreur", 2);
            return null;
        }
    }
 
    public String executer(String cad){
        try{
            Class.forName("driver");
            Connection cnx=DriverManager.getConnection(url, usr, pswd);
            PreparedStatement ps=cnx.prepareStatement(cad);
            int r=ps.executeUpdate();
            return +r+" ligne(s) affectée(s)";
        }
        catch(Exception e){
            javax.swing.JOptionPane.showMessageDialog(null, e.getMessage(), "Erreur", 2);
            return "Erreur "+e.getMessage();
        }
 
    }
}
Un autre package contenant la classe client et ses méthodes:
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
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package gci.bean;
 
import java.sql.ResultSet;
import java.util.ArrayList;
import gci.dao.Module;
/**
 *
 * @author PI
 */
public class Client {
    private String numCli;
    private String nomCli;
    private String adrCli;
    private String telCli;
    private String faxCli;
 
    public String getAdrCli() {
        return adrCli;
    }
 
    public void setAdrCli(String adrCli) {
        this.adrCli = adrCli;
    }
 
    public String getFaxCli() {
        return faxCli;
    }
 
    public void setFaxCli(String faxCli) {
        this.faxCli = faxCli;
    }
 
    public String getNomCli() {
        return nomCli;
    }
 
    public void setNomCli(String nomCli) {
        this.nomCli = nomCli;
    }
 
    public String getNumCli() {
        return numCli;
    }
 
    public void setNumCli(String numCli) {
        this.numCli = numCli;
    }
 
    public String getTelCli() {
        return telCli;
    }
 
    public void setTelCli(String telCli) {
        this.telCli = telCli;
    }
 
    public String supprimerClient(){
        Module objmod=new Module();
        String cad="delete from client where numCli='"+this.getNumCli()+"'";
        return objmod.executer(cad);
    }
 
    public String ajouterClient(){
        Module objmod=new Module();
        String cad="insert into client values('"+this.getNumCli()+"','"+this.getNomCli()+"','"+this.getAdrCli()+"','"+this.getTelCli()+"','"+this.getFaxCli()+"')";
        return objmod.executer(cad);
    }
 
    public String modifierClient(){
        Module objmod=new Module();
        String cad="update client set nomCli='"+this.getNomCli()+"',adrCli='"+this.getAdrCli()+"',telCli='"+this.getTelCli()+"',faxCli='"+this.getFaxCli()+"' where numCli='"+this.getNumCli()+"'";
        return objmod.executer(cad);
    }
 
    public ArrayList <Client> listeClient(){
        ArrayList liste=new ArrayList();
        try{
            Module objmod=new Module();
            ResultSet rs=objmod.lister("select * from client");
            Client objcli;
            while(rs.next()){
                objcli=new Client();
                objcli.setNumCli(rs.getString("numCli"));
                objcli.setNomCli(rs.getString("nomCli"));
                objcli.setAdrCli(rs.getString("adrCli"));
                objcli.setTelCli(rs.getString("telCli"));
                objcli.setFaxCli(rs.getString("faxCli"));
                liste.add(objcli);
            }
        }
        catch(Exception e){
            javax.swing.JOptionPane.showMessageDialog(null, e.getMessage(), "Erreur", 2);
        }
        return liste;
    }
}
Et un dernier package contenant l'interface de l'application c'est à son exécution que j'ai le message d'erreur cité plus haut:
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
/*
 * FenClient.java
 *
 * Created on 5 mars 2012, 23:31:09
 */
package gci.fen;
 
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import gci.bean.Client;
 
/**
 *
 * @author PI
 */
public class FenClient extends javax.swing.JFrame {
 
    /** Creates new form FenClient */
 
    public FenClient() {
        initComponents();
        this.setSize(700, 500);
        ListerClient();
    }
 
    private void ListerClient() {
        DefaultTableModel tableau = new DefaultTableModel();
        Client objcli = new Client();
        ArrayList <Client> liste= new ArrayList();
        liste = objcli.listeClient();
        tableau.addColumn("Numéro client");
 
        tableau.addColumn("Nom client");
        tableau.addColumn("Adresse client");
        tableau.addColumn("Téléphone client");
        tableau.addColumn("Fax client");
        tableau.setColumnCount(liste.size());
        int i=0;
        for (Client x : liste) {
            tableau.setValueAt(x.getNumCli(), i, 1);
            tableau.setValueAt(x.getNomCli(), i, 2);
            tableau.setValueAt(x.getAdrCli(), i, 3);
            tableau.setValueAt(x.getTelCli(), i, 4);
            tableau.setValueAt(x.getFaxCli(), i, 5);
            i++;
        }
        this.tabCli.setModel(tableau);
    }
 
    public void viderChamp() {
        this.numCli.setText(null);
        this.nomCli.setText(null);
        this.adrCli.setText(null);
        this.telCli.setText(null);
        this.faxCli.setText(null);
        numCli.requestFocus();
    }
 
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {
 
        jLabel1 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        numCliLabel = new javax.swing.JLabel();
        nomCliLab = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        valider = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        telCliLab = new javax.swing.JLabel();
        faxCliLab = new javax.swing.JLabel();
        numCli = new javax.swing.JTextField();
        nomCli = new javax.swing.JTextField();
        adrCli = new javax.swing.JTextField();
        telCli = new javax.swing.JTextField();
        faxCli = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabCli = new javax.swing.JTable();
        jPanel2 = new javax.swing.JPanel();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
 
        jLabel1.setFont(new java.awt.Font("Times New Roman", 2, 18));
        jLabel1.setText("Enregistrement des clients");
 
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(" Informations des clients "));
        jPanel1.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
 
        numCliLabel.setText("Numéro client :");
 
        nomCliLab.setText("Nom client :");
 
        jLabel4.setText("Adresse client :");
 
        valider.setText("Valider");
        valider.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                validerActionPerformed(evt);
            }
        });
 
        jButton2.setText("jButton2");
 
        jButton3.setText("jButton3");
 
        telCliLab.setText("Téléphone client :");
 
        faxCliLab.setText("Fax client :");
 
        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(123, 123, 123)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(valider)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jButton2)
                        .addGap(37, 37, 37)
                        .addComponent(jButton3))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(numCliLabel)
                            .addComponent(nomCliLab)
                            .addComponent(jLabel4)
                            .addComponent(telCliLab)
                            .addComponent(faxCliLab))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(nomCli, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)
                            .addComponent(adrCli, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)
                            .addComponent(telCli, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)
                            .addComponent(faxCli, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)
                            .addComponent(numCli, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE))))
                .addGap(188, 188, 188))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(numCliLabel)
                    .addComponent(numCli, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(nomCliLab)
                    .addComponent(nomCli, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(adrCli, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(14, 14, 14)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(telCliLab)
                    .addComponent(telCli, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(faxCli, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(faxCliLab))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(valider)
                    .addComponent(jButton2)
                    .addComponent(jButton3))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
 
        tabCli.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null}
            },
            new String [] {
                "Numéro client", "Nom client", "Adresse client", "Téléphone client", "Fax client"
            }
        ));
        jScrollPane1.setViewportView(tabCli);
        tabCli.getColumnModel().getColumn(0).setHeaderValue("Numéro client");
        tabCli.getColumnModel().getColumn(1).setHeaderValue("Nom client");
        tabCli.getColumnModel().getColumn(2).setHeaderValue("Adresse client");
        tabCli.getColumnModel().getColumn(3).setHeaderValue("Téléphone client");
        tabCli.getColumnModel().getColumn(4).setHeaderValue("Fax client");
 
        jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
 
        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 623, Short.MAX_VALUE)
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 18, Short.MAX_VALUE)
        );
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 607, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.CENTER, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.CENTER)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(68, 68, 68)
                .addComponent(jLabel1)
                .addGap(63, 63, 63)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
 
        pack();
    }// </editor-fold>
 
    private void validerActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        Client objcli = new Client();
        objcli.setNumCli(this.numCli.getText());
        objcli.setNomCli(this.nomCli.getText());
        objcli.setAdrCli(this.adrCli.getText());
        objcli.setTelCli(this.telCli.getText());
        objcli.setFaxCli(this.faxCli.getText());
        JOptionPane.showMessageDialog(null, objcli.ajouterClient(), "Enregistrement", 1);
        ListerClient();
    }                                       
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
 
            public void run() {
                new FenClient().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JTextField adrCli;
    private javax.swing.JTextField faxCli;
    private javax.swing.JLabel faxCliLab;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField nomCli;
    private javax.swing.JLabel nomCliLab;
    private javax.swing.JTextField numCli;
    private javax.swing.JLabel numCliLabel;
    private javax.swing.JTable tabCli;
    private javax.swing.JTextField telCli;
    private javax.swing.JLabel telCliLab;
    private javax.swing.JButton valider;
    // End of variables declaration
}
Selon moi j'ai mal constitué ma ArrayList mais je ne sais pas exactement. Que me suggérez-vous?

Merci d'avance