ArrayList com Banco de dados

bom dia !!!

Como posso fazer para excutar uma query ( select ) no banco de dados e jogar os dados em um ArrayList e depois utilizar estes dados.

Para fazer um select, se você está usando JDBC, você pode usar o PreparedStatement. Pode dar um olhada em PreparedStatement aqui http://www.guj.com.br/java.tutorial.artigo.115.1.guj

Depois é só percorrer os dados do ResultSet e ir jogando no ArrayList. Se você não sabe trabalhar com ArrayList, dê uma pesquisada no fórum, google, que certamente você irá encontrar exemplos.

ArrayList arr = new ArrayList(); rs = stmt.executeQuery(); while(rs.next()) arr.add(rs.getString(1));

se vem varios dados vc pode instanciar um bean a cada passada no while e add o bean no seu ArrayList

:wink:

aí um exemplo de um método que retorna uma List de objetos da classe Cliente que é um espelho da tabela Cliente do banco de dados.

public List pegaClientes(){

	List<Cliente> lista = new ArrayList<Cliente>();
	
	String query = "SELECT nome, endereco, telefone, empresa, email, registro from cliente";
	try {
		
		ResultSet rs = statement.executeQuery(query);
		
		while(rs.next()){
			Cliente cli = new Cliente(rs.getString(4), rs.getString(1), 
					rs.getString(2), rs.getString(5), rs.getString(3), rs.getString(6));
			lista.add(cli);
		}
		statement.close();
	}
	catch(SQLException e){
		e.printStackTrace();
	}
	return lista;
	
}

Obrigado ,

Agora estou com outra duvida :

Como posso pegar os dados da List e exibir em um jlabel .

jLabel.setText( )

ou seja,
como posso percorrer a list capturando cada dados que contem nela ?

[quote=azeitona]Obrigado ,

Agora estou com outra duvida :

Como posso pegar os dados da List e exibir em um jlabel .

jLabel.setText( )

ou seja,
como posso percorrer a list capturando cada dados que contem nela ?
[/quote]

Acho que seu problema está em entender melhor Collections.
Dê uma melhor estudada neles.
Respondendo sua pergunta. Para percorrer os dados de um ArrayList, você precisa de um objeto Iterator.

Voce tem algum exemplo do uso de Interator ?

Vc não precisa necessariamente usar um Iterator.

for ( int i = 0; i < arrayList.size(); i++ ) { // obtém o elemento arrayList.get( i ); }

Vc pode usar um CachedRowset para quardar todo seu ResultSet e percorrer ele sem precisar de um ArrayList para manter os dados “vivos” após fechar o seu Statement/PreparedStatement.

Eu fiz o seguinte :

List dados = new ArrayList ();
Pessoais dadospessoais = new Pessoais ();

dadospessoais.setnome(“azeitona”);
dadospessoais.setvalor(“554.5”);

dados.add(dadospessoais);

     Iterator it = dados.iterator();
     while (it.hasNext()){
        
          System.out.println(it.next());
        
    }
  mas quando executa o print esta aparecendo dados estranhos :

testes.Pessoais@139b78e
testes.Pessoais@139b78e
testes.Pessoais@139b78e
testes.Pessoais@139b78e
testes.Pessoais@139b78e

Vc sabe o que pode estar acontecendo ?

ele está imprimindo o endereço do array!

Eu mudei o codigo para :

for (i = 0; i < dados.size(); i++) {

System.out.println(dados.get(i).getnome());
System.out.println(dados.get(i).getvalor());

}

mas agora esta imprimindo sempre o ultimo valor e nao toda a lista .
na lista contem os :
azeitona , 23
caio , 43
marco, 23

so imprimi o ultimo

marco , 23
marco ,23
marco ,23

O que pode estar errado ?
alguem pode me ajudar ?

[quote=azeitona]Eu fiz o seguinte :

List dados = new ArrayList ();
Pessoais dadospessoais = new Pessoais ();

dadospessoais.setnome(“azeitona”);
dadospessoais.setvalor(“554.5”);

dados.add(dadospessoais);

     Iterator it = dados.iterator();
     while (it.hasNext()){
        
          System.out.println(it.next());
        
    }
  mas quando executa o print esta aparecendo dados estranhos :

testes.Pessoais@139b78e
testes.Pessoais@139b78e
testes.Pessoais@139b78e
testes.Pessoais@139b78e
testes.Pessoais@139b78e

Vc sabe o que pode estar acontecendo ?[/quote]

Você precisa fazer um cast para sua arraylist.
Ao invés de fazer System.out.println(it.next());
faça

Pessoais dadospessoais = (Pessoais) it.next();
System.out.println(dadospessoais.getNome());

Use o foreach, nem precisara mais de cast!

for (Pessoais dp : dados) {
    dp.getNome();

}