ArreyList e Iterator - Como resgatar dados da ArreyList

Pessoal, to tentando resolver um problema:
Tenho que fazer 2 buscas, uma retornará várias chaves estrangeiras do banco, as mesmas serão inseridas em uma ArreyList da seguinte forma:

while (rs.next()) { cod_exame.add(rs.getString("cod_exame")); }

Bom, o problema é o seguinte, depois terei que faze uma busca tendo como parametro os dados da arreyList.Pensei em a cada posição da arreyList pegar o valor da posião e jogar para uma variável para fazer a comparação na query.
Segue abaixo:

[code]
public ArrayList cod_exame = new ArrayList();
Iterator it = cod_exame.iterator();

public void exibePacienteFenotipo(ArrayList cod_exame)
{
try{

   con = getConnection();
             
  PreparedStatement stmt=con.prepareStatement("select pac_codigo from H_BSExame where codExame=?");

while(it.hasNext()){
cod = it.get(it.next()); // linha da duvida

    stmt.setInt(1,cod);
    
}
         
  
  ResultSet rs = stmt.executeQuery();
     while (rs.next())
        {
          paciente.add(Integer.toString(rs.getInt("pac_codigo")));
        } 
}
   catch (Exception e) {
           e.printStackTrace();
      }

}[/code]

Porém a linha // cod = it.get(it.next()); esta dando erro, e não sei como resgatar tais dados.Alguem pode me ajudar?

[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Carneiro[/color][/size] :joia:

cara blz?
tenta fazer assim ó
cod = it.next();

o método next() ja te retorna o próximo valor da iteração.

Cara, que maluquisse que vc esta fazendo?!

:wink:

Pelo que entendi vc vai passar uma lista com codigo de exames e quer retornar a lista de codigo dos pacientes desses exames?! isso?!
bem, eu imagino que com um sql vc resolveria isso, mas beleza, naum vou entrar em detalhes quanto a logica que vc quer usar hehe

Primeiro, seu codigo tem um erro que faz ele naum compilar, e ai desculpa, mas erro de compilacao eh algo que eu deixo as pessoas se matarem um pouco, afinal o compilador ja te diz qual o problema, ou ele naum eh claro quando diz que naum existe um metodo get na interface Iterator?! :wink:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html
Entao taca fora logo esse metodo e usa como o cara do post anterior disse.

Agora vamos aos erros de logica:
Olha a confusao no seu codigo, vc recebe um ArrayList com codigo de exames (provavelmente pelo nome da variavel), depois vc obtem a conexao, prepara o statement para consulta, ateh ai blz, depois que comeca os problemas, vc da um “while(it.hasnext)”, o que it esta iterando?! com certeza naum eh os exames passados como parametros, olhando seu codigo it itera sobre um atributo da classe chamado cod_exame, que eh iniciado com um array vazio 8O logo seu it naum vai iterar sobre nada… mas, mesmo que iterasse certo sobre o parametro passado, estaria errado dessa forma, porque iria setar o parametro na query mas naum iria executar ela, quando o ultimo codigo fosse setado, ai que iria sair do while e executar a query (stmt.executeQuery();). Entao acertando seu erro de compilacao, iria dar um erro em tempo de execucao no executeQuery, pois como It naum itera sobre nada, vc naum iria setar os parametros da query e ia dar erro.

Muda esse seu codigo para esse e vai testando, pode ser que tenha erro mas acho que esta mais certo do que tu tem ai:

	public void exibePacienteFenotipo(List cod_exame) {
		try {
			Connection con = getConnection();
			PreparedStatement stmt = con
					.prepareStatement("select pac_codigo from H_BSExame where codExame=?");

			Iterator it = cod_exame.iterator();
			List paciente = new ArrayList();
			
			while (it.hasNext()) {
				Integer cod = (Integer) it.next();
				stmt.setInt(1, cod);

				ResultSet rs = stmt.executeQuery();
				while (rs.next()) {
					paciente.add(Integer.toString(rs.getInt("pac_codigo")));
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}