Bonjour à tous
Je travail actuellement sur les JTables pour afficher les données d'une base de données. Lorsque que j'effectue les traitement pour créer les 2 vecteurs (data et columnName) et que je les affiche avec ceci :
Je n'ai pas de perte de données
Code : Sélectionner tout - Visualiser dans une fenêtre à part JTable jtable = new JTable(data,ColumnName);
avec le code suivant :
Des lignes manques lorsque que je me sert du TableModel comme ceci
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 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.Vector; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; /*Cette classe se connect à la base de donnee * creer les 2 vecteurs nécessaire à la creation de la TableModel * affecte les valeurs creer aux attributs de la classe * et se deconnect de la base de donnee * * Elle instancie egalement les methodes de la classe abstraite * "AbstractTableModel" qui définit un TableModel * * */ public class BddAllelicResultByGermplasm extends AbstractTableModel { private Vector data = new Vector(); private Vector columnName = new Vector(); ResultSet rsAllResSample = null; Statement stmt = null; Connection conn = null; private static final long serialVersionUID = 1L; BddAllelicResultByGermplasm() { recupDonnees(); } /* * Cette méthode se connect à la base de donnée et fait des traitement afin * de générer Les 2 vecteurs pour la construction du modeleTable */ public void recupDonnees() { try { /* Register the driver */ Class.forName("com.mysql.jdbc.Driver").newInstance(); try { /* Connexion à la base */ Connection conn = DriverManager.getConnection( "jdbc:mysql://127.0.0.1/sagacity", "root", "mysql"); try { stmt = conn.createStatement(); rsAllResSample = stmt .executeQuery("SELECT * FROM all_res_samp"); ResultSetMetaData md = rsAllResSample.getMetaData(); // info sur la structure de la table table int columnCount = md.getColumnCount(); /* Creation du vecteur column */ Vector<String> columnName = new Vector<String>(columnCount); for (int i = 1; i <= columnCount; i++) { columnName.add(md.getColumnName(i)); } this.columnName = columnName; data = new Vector<Vector<String>>(columnCount); /* * on creer les lignes une par une et on ajoute au vecteur * data */ while (rsAllResSample.next()) { Vector<String> row = new Vector<String>(columnCount); for (int i = 1; i <= columnCount; i++) { row.add(rsAllResSample.getString(i)); } data.add(row); } this.data = data; /* Test */ View v = new View(); JTable jt = new JTable(data,columnName); v.viewTablePrincipale(jt); conn.close(); } catch (SQLException SQLEx) { System.out.println("SQLException: " + SQLEx.getMessage()); } finally { /* En cas de problème on ferme tout */ if (rsAllResSample != null) { try { rsAllResSample.close(); } catch (SQLException sqlEx) { System.out.println("SQLException: " + sqlEx.getMessage()); } rsAllResSample = null; } if (stmt != null) { try { stmt.close(); } catch (SQLException sqlEx) { System.out.println("SQLException: " + sqlEx.getMessage()); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException sqlEx) { // Ignore } conn = null; } } } catch (SQLException SQLex) { System.out.println("SQLException: " + SQLex.getMessage()); System.out.println("SQLState: " + SQLex.getSQLState()); System.out.println("VendorError: " + SQLex.getErrorCode()); } } catch (Exception ex) { System.out.println("Exception " + ex.getMessage()); } } @Override public int getColumnCount() { return columnName.size(); } @Override public int getRowCount() { return data.size() / getColumnCount(); } @Override public Object getValueAt(int rowIndex, int columnIndex) { return (String) ((Vector) data.elementAt(rowIndex)) .elementAt(columnIndex); } }
Est ce que vous avez déjà rencontré ce genre de problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 BddAllelicResultByGermplasm bddAll = new BddAllelicResultByGermplasm (); JTable jtable = new JTable(bddAll);
Merci
Partager