[resolvido]erro no resultset

seguinte, fiz um codigo para guardar as informações do banco de dados em um array, segue abaixo:

String[][] dados;
        dados = new String[1000][1000];
        
        
        try{
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            conexao = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:\\teste\\CADASTROS.FDB","SYSDBA","masterkey");
            statement = conexao.createStatement();
            resultset = statement.executeQuery("select * from tb_clientes");
            
            //guardando dados no array
            int linha = 0;
            while (resultset.next()){
                
                dados[linha][0] = resultset.getString("cod");
                dados[linha][1] = resultset.getString("nome");
                dados[linha][2] = resultset.getString("endereco");
                dados[linha][3] = resultset.getString("email");
                dados[linha][4] = resultset.getString("telefone");
                dados[linha][5] = resultset.getString("estado");
                dados[linha][6] = resultset.getString("sexo");
                dados[linha][7] = resultset.getString("interesses");
                dados[linha][8] = resultset.getString("biografia");
                dados[linha][9] = resultset.getString("dat");
                
                
                
                
                linha++;         
                      
            }
            
            //exibindo array            
            int x=0;
            for(int i=0 ; i<2 ; i++){          
                while(x<9){
                System.out.println("dados["+i+"]["+x+"]" + dados[i][x]);
                x++;
                }
            }    
        }
        catch(ClassNotFoundException Driver){
            JOptionPane.showMessageDialog(null, "DRIVER NAO LOCALIZADO");
        }
        catch(SQLException Fonte){
            JOptionPane.showMessageDialog(null, "erro na conexão com a fonte");
        }

beleza funciona legal!

porem, pesquisando verifiquei que ficaria melhor guardar os dados em uma classe e depois instaciar objetos.
entao criei a classe cleinte:

public class Cliente {
    
    private String cod;
    private String nome;
    private String endereco;
    private String email;
    private String telefone;
    private String estado;
    private String sexo;
    private String interesses;
    private String biografia;
    private String dat;

//e os get e set desses atributos!

ae fui fazer a parte de adicionar os dados a esses atributos.
ficou assim:

try{
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            conexao = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:\\teste\\CADASTROS.FDB","SYSDBA","masterkey");
            statement = conexao.createStatement();
            resultset = statement.executeQuery("select * from tb_clientes");
            
            
            //verificando quando registros ha no banco!
            int i=0;
            while(resultset.next()){
                i++;             
            }
            System.out.println(i);
            
            //zerando o resultset
            resultset = statement.executeQuery("select * from tb_clientes");
            
            //colocando nos objetos
            int x = i;
            Cliente[] cliente = new Cliente[x];
            
            while(resultset.next()){
                for (int y = 0; y < x; y++){ 
                    cliente[i] = new Cliente(); 
                    cliente[i].setNome(resultset.getString("cod"));
                } 
            }
            
              
        }
        catch(ClassNotFoundException Driver){
            JOptionPane.showMessageDialog(null, "DRIVER NAO LOCALIZADO");
        }
        catch(SQLException Fonte){
            JOptionPane.showMessageDialog(null, "erro na conexão com a fonte");
        }

porem ocorre o erro:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
	at guardardadosemarray.GuardarDadosDoBancoNoObjeto.atualizarArray(GuardarDadosDoBancoNoObjeto.java:41)
	at guardardadosemarray.ClassePrincipal.main(ClassePrincipal.java:19)
Java Result: 1

alguem saberia me ajudar??

Brother,

Não entendi a necessidade de utilizar o array em si.
Que tal criar uma lista de clientes?

List&lt;Cliente&gt; clientes = new ArrayList&lt;Cliente&gt;();

while(resultset.next()){  
    Cliente cliente = new Cliente();
    cliente.setCod(...);
    cliente.setNome(...);

    clientes.add(cliente);
} 

pq dps vou precisar fazer um pesquisa neste dados…
to pesquisando, quando conseguir posto aqui
se alguem tiver dicas eu agradeço :wink:

E qual é o problema de trabalhar com o list?

depois é só fazer um FORzinho para pegar os dados:

for(int i=0; i &lt; clientes.size(); i++){
    Cliente cliente = clientes.get(i);
    syso(&quot;Nome: &quot;+cliente.getNome());
}

usei a lista como voce indicou luisgarcia173
meu codigo ficou assim:

public void atualizarArray(){
        try{
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            conexao = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:\\teste\\CADASTROS.FDB","SYSDBA","masterkey");
            statement = conexao.createStatement();
            resultset = statement.executeQuery("select * from tb_clientes");
            
            
            //verificando quando registros ha no banco!
            int i=0;
            while(resultset.next()){
                i++;             
            }
            System.out.println("numero de registros no banco: " + i);
            
            //zerando o resultset
            resultset = statement.executeQuery("select * from tb_clientes");
            
            //colocando nos objetos
            List<Cliente> listaCliente = new ArrayList<Cliente>();
            while (resultset.next()){
                Cliente cliente = new Cliente();
                cliente = new Cliente();
                cliente.setCod(resultset.getString("cod"));
                cliente.setNome(resultset.getString("nome"));
                cliente.setEndereco(resultset.getString("endereco"));
                cliente.setEmail(resultset.getString("email"));
                cliente.setTelefone(resultset.getString("telefone"));
                cliente.setEstado(resultset.getString("estado"));
                cliente.setSexo(resultset.getString("sexo"));
                cliente.setInteresses(resultset.getString("interesses"));
                cliente.setBiografia(resultset.getString("biografia"));
                cliente.setDat(resultset.getString("dat"));
                listaCliente.add(cliente);
            }
            
            //exibindo clientes
            
            for(int x = 0; x<listaCliente.size();x++){
                System.out.println(listaCliente.get(x).getCod() + " ---- " + listaCliente.get(x).getNome() + " ---- " + listaCliente.get(x).getEndereco() + " ---- " + listaCliente.get(x).getEmail() + " ---- " + listaCliente.get(x).getTelefone() + " ---- " + listaCliente.get(x).getEstado() + " ---- " + listaCliente.get(x).getSexo() + " ---- " + listaCliente.get(x).getInteresses() + " ---- " + listaCliente.get(x).getBiografia() + " ---- " + listaCliente.get(x).getDat());
            }
            
              
        }
        catch(ClassNotFoundException Driver){
            JOptionPane.showMessageDialog(null, "DRIVER NAO LOCALIZADO");
        }
        catch(SQLException Fonte){
            JOptionPane.showMessageDialog(null, "erro na conexão com a fonte");
        }
    }

que tal? :wink:

Se funcionou é o que importa. Agora é se ir melhorando seu código conforma vai ganhando experiência, tipo separar classe de conexao e etc.

Mas uma dica legal, sobrescrever o toString da sa classe.

//Na sua classe cliente coloque public String toString(){ return "Código: "+this.cod+ " Nome: "+this.nome+ " Endereço: "+this.endereco+ ....; }

Depois fica mais elegante ainda o seu FORzinho:

for(int x = 0; x&lt;listaCliente.size();x++){ listaCliente.get(x).toString(); } >

fiz isso que voce falou, mas nao esta exibindo nada na tela Oo

da uma olha:
classe cliente

private String cod;
    private String nome;
    private String endereco;
    private String email;
    private String telefone;
    private String estado;
    private String sexo;
    private String interesses;
    private String biografia;
    private String dat;

    public String toString(){
        return "cod: "+this.cod+
                " nome: "+this.nome;
                
    }
//mais os get's e set's

e o metodo que passa pros objetos os dados do banco de dados e depois mostra eles:

public void atualizarArray(){
        try{
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            conexao = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:\\teste\\CADASTROS.FDB","SYSDBA","masterkey");
            statement = conexao.createStatement();
            resultset = statement.executeQuery("select * from tb_clientes");
            
            
            //verificando quando registros ha no banco!
            int i=0;
            while(resultset.next()){
                i++;             
            }
            System.out.println("numero de registros no banco: " + i);
            
            //zerando o resultset
            resultset = statement.executeQuery("select * from tb_clientes");
            
            //colocando nos objetos
            List<Cliente> listaCliente = new ArrayList<Cliente>();
            while (resultset.next()){
                Cliente cliente = new Cliente();
                cliente = new Cliente();
                cliente.setCod(resultset.getString("cod"));
                cliente.setNome(resultset.getString("nome"));
                cliente.setEndereco(resultset.getString("endereco"));
                cliente.setEmail(resultset.getString("email"));
                cliente.setTelefone(resultset.getString("telefone"));
                cliente.setEstado(resultset.getString("estado"));
                cliente.setSexo(resultset.getString("sexo"));
                cliente.setInteresses(resultset.getString("interesses"));
                cliente.setBiografia(resultset.getString("biografia"));
                cliente.setDat(resultset.getString("dat"));
                listaCliente.add(cliente);
            }
            
            //exibindo clientes
            
            for(int x = 0; x<listaCliente.size();x++){
                listaCliente.get(x).toString();
            }
            
            //pesquisando por data na list.
            
              
        }
        catch(ClassNotFoundException Driver){
            JOptionPane.showMessageDialog(null, "DRIVER NAO LOCALIZADO");
        }
        catch(SQLException Fonte){
            JOptionPane.showMessageDialog(null, "erro na conexão com a fonte");
        }
    }

i ae? executo e nao aparece nada na tela =/

Kkkk, foi mal!!!

System.out.println( listaCliente.get(x).toString());

mal digo eu! nem me dei conta KKKKKKKKK
valeu cara, me fez ganhar a tarde ;D

É nóis parcero!!!

depois mete [RESOLVIDO] no assunto do post!!!

Abraço.

ok, coloquei ali!
desculpa o abuso!
mas agora como eu faço para psquisar nesses objetos
por exemplo, quero pesquisar pelo atributo data!

vou digitar uma data (no mesmo formato que ela se encontra)
e quero que venha todos os clientes que possuem a mesma data…

se puder ajudar lhe agradeço :wink:
[]'s

simples e rápido vc pode usar o seu for e comparar data.

for(int x=0; x &lt; listaCliente.size(); x++){
    if(listaCliente.get(x).getData().equals(dataComparacao)){
        System.out.println(listaCliente.get(x).toString());
    }
}

ou mais elegante, criando um toCompare na sua classe Cliente

//implementar Comparable
public Cliente implements Comparable&lt;Cliente&gt;{

    //atributos
    //gets e sets
    //tostring

    // retorna 0(zero) se for igual
    public int toCompare(Cliente c){
        return this.getData.toCompare(c.getData);
    }

}
//sua classe que tem a lista de clientes
Cliente clienteFiltro = new Cliente();
clienteFiltro.setData(...);

for(int x=0; x &lt; listaCliente.size(); x++){
    Cliente clienteRetornado = listaCliente.get(x);
    if(clienteRetornado.toCompare(clienteFiltro) == 0){
        System.out.println(clienteRetornado.toString());
    }
}

Blz?

Detalhe, não testei!

Não lembro se data compara com .equals que nem String, se não me engano tem que usar uns métodos do Calendar, mas qq coisa já tem o caminho das pedras!