Problema na Consulta banco HSQLDB

2 respostas
L

Boa noite pessoal

Na minha consulta abaixo, está carregando sempre o mesmo registro, mesmo eu utilizando while(rs.next()).
Eu estou utilizando uma consulta com like "%nomedigitado%", sendo assim ele traz vários nomes, mas no meu array ele coloca sempre o mesmo, ou seja, parece que não está indo para o próximo regsitro do result set.

O que estou fazendo de errado ??

Obrigado.

public Contato[] consultaContatoNome(Contato contato) {

		// Obtem uma entrada para consulta SQL na conexão
		Connection c = Conexao.getConnection();
		Contato[] arrayContatos = new Contato[50];
		int cont = 0;
		
		try {
			
			String sql = "select nome from pessoa where nome like '%" +
				           "contato.getNome().trim()+ "%' order by nome";
						
			PreparedStatement pStm = c.prepareStatement(sql);
			pStm.executeQuery();
			ResultSet rs = pStm.getResultSet();
			
			while (rs.next()) {

				contato.setNome(new String(rs.getString(1)));

				arrayContatos[cont] = contato;
				cont = (cont+1);
				
			}

			pStm.close();

		} catch (SQLException e) {
			Mensagem
					.mensagemErro("Erro SQL",
							"Não foi possivel executar select da tabela pessoa na base.");
			e.printStackTrace();
		} finally {
			try {
				c.close();
			} catch (SQLException e) {
				Mensagem.mensagemErro("Erro SQL",
						"Não foi possivel fechar conexão com BD.");
				e.printStackTrace();
			}
		}
		return arrayContatos;
	}

2 Respostas

S

Aparentemente não tem nada de errado com seu código não, você já pensou em usar List em vez de array ?
ai dentro do while ficaria assim:

List ret = new ArrayList();
while (rs.next()) {
            Contato contato = new Contato();
            contato.setNome(new String(rs.getString(1)));

            ret.add(contato);
            
         } 
return ret;
L

Obrigado amigo, funcionou beleza.
Eu estava esquecendo de fazer:
Contato contato = new Contato(), sendo assim, o contato sempre era sobreposto pelo próximo contato.

Abraços,
Lucas

Criado 27 de março de 2007
Ultima resposta 30 de mar. de 2007
Respostas 2
Participantes 2