JDBC: resultSet acha somente a primeira linha do BD

4 respostas
ATEN

quando faço a busca no banco de dados, ele simplesmente le a primeira linha e sai
será que alguem saberia o pq?

public class JDBCContatoDAO implements ContatoDAO {

	// ATRIBUTO DA CLASSE
	Connection conexao;

	// CONSTRUTOR DA CLASSE
	public JDBCContatoDAO(Connection conexao) {
		this.conexao = conexao; // FABRICA DE CONEXOES FORNECE CONEXAO COM O
								// BANCO
	}
@Override
	// VERIFICAR SE ALUNO SE ENCONTRA NO BANCO DE DADOS
	public boolean verificaAluno(Aluno aluno) {
		boolean resultado = false;
		String nome = aluno.getNome().toLowerCase();	//CONVERTE NOME DO ALUNO PARA MINUSCULA, OBS: TODO BANDO DE DADOS EM MINUSCULA
		String comando = "Select nomeAluno, matricula from aluno";
		System.out.println("aluno passado:"+ aluno.getNome()+" "+aluno.getMatricula());
		try {
			PreparedStatement p = this.conexao.prepareStatement(comando);
			ResultSet rs = p.executeQuery();
			
			if (rs.next() && !resultado) {
				String nome1 = rs.getString("nomeAluno");
				String matricula = rs.getString("matricula");
				System.out.println("banco "+nome1);    //COLOQUEI ESSES PRINTS AQUI PARA VER QUAIS RESULTADOS ELE IMPRIMI LA DO BANCO  
				System.out.println("banco "+matricula);   //ELE IMPRIMI SOMENTE A PRIMEIRA LINHA DO BD
				if (aluno.getMatricula().equals(rs.getString("matricula"))  && nome.equals(rs.getString("nomeAluno"))){ 
					resultado = true;
				}
			}
			rs.close();
			p.close();
		} catch (Exception e) {
			System.out.println("erro ao selecionar");
			e.printStackTrace();
		}
		return resultado;
	}
}

tal funcção so deveria verificar se o usuário esta no banco de dados. ele ve somente a primeira linha do banco de dados

[]; :wink:

4 Respostas

marcelo.silva

tire o if, coloque o while

drsmachado

Seguindo o que o marcelo.silva disse, quando você faz uma consulta e invoca o método next() do ResultSet, ele automaticamente pula para a primeira linha.
Como o while faz um if em toda iteração (independente do número de vezes que o laço vá se repetir), não há por que fazer um if naquele local, pois o while irá interar sobre o trecho de código caso haja algum registro no resultset (ou seja, caso a query retorne alguma tupla).

pmlm

E já agora, aconselho a estudar SQL

Uma coisa chamada WHERE facilita bastante…

ATEN

bah!!!

Valeu muito pessoal, esse if passou desapercibido mesmo por mim :oops: . isso é o que acontece quando se programa as 3 da manhã!!! hehe
obrigado []s

Criado 31 de agosto de 2011
Ultima resposta 31 de ago. de 2011
Respostas 4
Participantes 4