Tenho um metodo que não recebe nada e retorna um vetor de strings:
public String[] carregarListaCidades() {
String database = procurarCaminhoBanco(); // jdbc:postgresql://localhost/locadoras eh o q deve ta dentro do arquivo
String usuario = "postgres";
String senha = "masterkey";
String driverName="org.postgresql.Driver";
Connection conexao;
Statement consulta;
ResultSet resultado;
String[] cidades = null;
int contador=0;
try{
Class.forName(driverName);
conexao = DriverManager.getConnection(database,usuario,senha);
consulta = conexao.createStatement();
resultado = consulta.executeQuery("SELECT * FROM cidades order by codcidade");
while(resultado.next()){
cidades[contador]=resultado.getString("cidade");
contador++;
}
}catch(Exception e){JOptionPane.showMessageDialog(null, e.getCause());}
return(cidades);
}
E pra chamar o método eu faço assim:
String[] cidades=carregarListaCidades();
porém ele dá erro. o que tá errado nesse código?
Vetores não aumentam seu tamanho dinamicamente.
String[] cidades = null;
//e
while(resultado.next()){
cidades[contador]=resultado.getString("cidade");
contador++;
}
Ou seja, não funciona.
Você precisa determinar o tamanho do Vetor antes de iniciar as chamadas a ele, caso contrário, idicará NullPointerException
//cria o vetor com 100 posições
String[] cidades = new String[100];
while(resultado.next()){
cidades[contador]=resultado.getString("cidade");
contador++;
}
Isso é inviável.
O correto seria utilizar um ArrayList
Hmm entendi, vou criar como você falou depois posto qui caso deu certo.
Deu certo usando o arrayList, valeu!
Segue o código pra quem quiser:
public ArrayList carregarListaCidades() {
String database = procurarCaminhoBanco(); // jdbc:postgresql://localhost/locadoras eh o q deve ta dentro do arquivo
String usuario = "postgres";
String senha = "masterkey";
String driverName="org.postgresql.Driver";
Connection conexao;
Statement consulta;
ResultSet resultado;
ArrayList cidades = new ArrayList();
try{
Class.forName(driverName);
conexao = DriverManager.getConnection(database,usuario,senha);
consulta = conexao.createStatement();
resultado = consulta.executeQuery("SELECT * FROM cidades order by codcidade");
while(resultado.next()){
cidades.add(resultado.getString("cidade"));
}
}catch(Exception e){JOptionPane.showMessageDialog(null, e.getCause());}
return(cidades);
}
como eu chamei a função:
ArrayList cidades=a.carregarListaCidades();
for(int i=0;i<cidades.size();i++){
CampoCadastroClientesCidade.addItem(cidades.get(i));
}