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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
JTable jtable = new JTable(data,ColumnName);
Je n'ai pas de perte de données

avec le code suivant :

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);
	}
 
}
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
 
 
BddAllelicResultByGermplasm bddAll = new BddAllelicResultByGermplasm ();
JTable jtable = new JTable(bddAll);
Est ce que vous avez déjà rencontré ce genre de problème ?
Merci