Olá!!
Tenho um problema. Estou a “tentar” ler um result set para um array de strings mas dá-me erro.
O meu código é o seguinte:
ps_aux = c.prepareStatement("SELECT Nome FROM " + tab_aux + " WHERE (Nome IS NOT NULL)");
System.out.println("SELECT Nome FROM " + tab_aux + " WHERE (Nome IS NOT NULL)");
rs_aux = ps_aux.executeQuery();
//rs_aux.next(); // BEACAUSE The result set will always come to you positioned before the first row...
while(rs_aux.next())
{
for(int i = 0; rs_aux.last(); i++)
{
// New object
storesList [i] = rs_aux.getString("Nome");
System.out.println("Nome");
}
}
rs_aux.close();
ps_aux.close();
c.close();
sempre que for postar algum problema, tente postar o erro que está dando.
Bom, vamos lá, o erro pode estar sendo ocasiondado pelo seguinte, você está atribuindo mais elementos do que o teu array pode suportar, uma dica, você pode usar ArrayList, este manipula de forma dinâmica o seu tamnhao enquanto que o array é estático.
...
List<String> lista = new ArrayList<String>();
while(rs_aux.next()){
// New object
lista.add(rs_aux.getString("Nome"));
}
...
Bom, primeiramente você teria que saber o tamanho do array.
Supondo que o limite máximo de registros que irá voltar do banco é 100 você poderia fazer assim
ps_aux = c.prepareStatement("SELECT Nome FROM " + tab_aux + " WHERE (Nome IS NOT NULL)");
System.out.println("SELECT Nome FROM " + tab_aux + " WHERE (Nome IS NOT NULL)");
rs_aux = ps_aux.executeQuery();
String[] storesList = new String[100];
int i = 0;
while(rs_aux.next()) {
storesList [i++] = rs_aux.getString("Nome");
System.out.println("Nome");
}
Pode fazer da seguinte maneira também, usando o mesmo exemplo do Thiago.
[code]ps_aux = c.prepareStatement(“SELECT Nome FROM " + tab_aux + " WHERE (Nome IS NOT NULL)”);
System.out.println(“SELECT Nome FROM " + tab_aux + " WHERE (Nome IS NOT NULL)”);
rs_aux = ps_aux.executeQuery();
String[] storesList = new String[rs_aux.size]; // Note que tu podes utilizar o size do rs_aux para definir o tamanho do array.
int i = 0;