Eu to iterando em um ResultSet e jogando pra dentro de um ArrayList.
A tabela tem 499 registros… so que meu arraylist ta ficando com
499 vezes o último registro!! vê ai se vcs identificam onde ta o erro…
ArrayList dados = new ArrayList();
String[] registro;
try {
stmt = CONN.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(x);
registro = new String[rs.getMetaData().getColumnCount()];
rs.beforeFirst();
while (rs.next()) {
for (int i=0; i<rs.getMetaData().getColumnCount(); i++) {
registro[i] = rs.getString(i+1);
}
dados.add(registro);
}
O problema eh que vc esta usando a mesma referencia do “registro”. Declare o array de Strings dentro do while e ira funcionar.
O teu codigo pode ser melhorado um pouco, especialmente em relacao a performance:
List dados = new ArrayList();
try {
stmt = CONN.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(x);
int total = rs.getMetaData().getColumnCount()
String[] registro = new String[total];
while (rs.next()) {
for (int i = 0; i < total; i++) {
registro[i] = rs.getString(i + 1);
}
dados.add(registro);
}
}
Olhe o exemplo que eu passei na resposta. A maior coisa eh que vc usava rs.getMetaData().getColumnCount() constantemente, quando uma unica vez eh necessaria. Outra boa pratica de programacao eh usar interfaces sempre quando possivel. Assim, ao inves de fazer