ArrayList só preenche uma vez

3 respostas
E

Eu tenho uma classe q faz os comandos sql e os resultados preenche um arraylist pra preencher uma tabela.
A primeira vez q faço a consulta, preenche perfeitamente, porém na segunda o arraylist me retorna vazio!!
Eu faço um print do array na classe de conexão e ele me mostra preenchido , depois faço na outra classe e
me mostra vazio.
Já tentei static public e nada.

O q será q está acontecendo??

public ArrayList<String[]> pesq = new ArrayList();

 public void consultaContaNome (String sql){
	    	  
	    		try{
	    			
	    			rs = st.executeQuery("Select nm_conta,dt_conta,num_parcelas,vl_conta From tb_conta where nm_conta like '%"+sql+"%' ");
	  	    	  pesq.clear();
	    			while (rs.next()){
	    				
	    	             n = rs.getString("nm_conta");
	    	             data = rs.getDate("dt_conta");
	    	             t = rs.getString("num_parcelas");
	    	             t2 = rs.getString("vl_conta"); 
	    	             
	    	             resultData = out.format(in.parse(data.toString()));
	    	             
	    	             //System.out.println("String "+nomes);
	    	             pesq.add(new String [] {n,resultData,t,t2});
	    	             System.out.println("list "+pesq);
	    	             
	    				}
	    		}
	    		catch (SQLException e2){
	    			JOptionPane.showMessageDialog(null, "Problema no SQL!");
	    		} catch (ParseException e) {
					e.printStackTrace();
				}
	    	}

3 Respostas

romarcio

Faz um teste, tenta colocar o ArrayList<String[]> pesq = new ArrayList(); dentro do seu método consultaContaNome. Dai sempre que acessar esse método ele cria um novo ArrayList.

Não tenho certeza se vai funcionar, mas dá uma tentada.

No delphi já tive problema parecido, dai antes do “While (rs.next)” eu colocava um “rs.first”, dai sempre antes de inicar o while, eu tinha certeza que ele seria iniciado na 1ª posição. Não lembro se no resultset tem essa propriedade(first), faz tempo que não trabalho com resultset.

Mas é outro modo que pode ser testado.

E

romarcio:
Faz um teste, tenta colocar o ArrayList<String[]> pesq = new ArrayList(); dentro do seu método consultaContaNome. Dai sempre que acessar esse método ele cria um novo ArrayList.

Não tenho certeza se vai funcionar, mas dá uma tentada.

No delphi já tive problema parecido, dai antes do “While (rs.next)” eu colocava um “rs.first”, dai sempre antes de inicar o while, eu tinha certeza que ele seria iniciado na 1ª posição. Não lembro se no resultset tem essa propriedade(first), faz tempo que não trabalho com resultset.

Mas é outro modo que pode ser testado.

Cara, funcionou!! Muito Obrigado!!

romarcio

Que bom, feito então :smiley:

Criado 27 de novembro de 2009
Ultima resposta 28 de nov. de 2009
Respostas 3
Participantes 2