ArrayList com Banco de dados

12 respostas
A

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.

12 Respostas

J

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.

E

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:

T

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;
	
}
A

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 ?

J

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 ?

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.

A

Voce tem algum exemplo do uso de Interator ?

D

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.

A

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 ?

E

ele está imprimindo o endereço do array!

A

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 ?

J

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 ?

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());
P

Use o foreach, nem precisara mais de cast!

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

}
Criado 28 de maio de 2007
Ultima resposta 28 de mai. de 2007
Respostas 12
Participantes 6