código dentro do while não executa

3 respostas
C

Olá, bom dia. Porque este código que está dentro do while não executa?

public void atualiza (Consulta u) throws SQLException {
		String data = u.getDataNasc();
		String horario = u.getHorario();
		java.sql.PreparedStatement stmt = this.connection.prepareStatement("select * from consulta");
		java.sql.ResultSet rs = stmt.executeQuery();
		System.out.println(rs"); // aparece na console do Eclipse
		System.out.println(rs.first()); // aparece na console do Eclipse
		System.out.println(rs.last()); // aparece na console do Eclipse
		System.out.println(rs.getString("dataNasc")); // aparece na console do Eclipse
		
		while (rs.next()){ //daqui prá frente nada aparece na console, mesmo se eu tirar os ifs e deixar só o while com as mensagens para serem impressas
			System.out.println(rs.getString("dataNasc"));
			if (rs.getString("dataNasc") == data){
				System.out.println("A data é iguallllllllllllllllllllllllllllllll");
				rs.close();
				stmt.close();
			} 
			else if (rs.getString("dataNasc") != data){
				System.out.println("A data não é iguallllllllllllllllllllllllllllllll");
		this.session.merge(u);
		rs.close();
		stmt.close();
			}
		}
			
		rs.close();
		stmt.close();
	//this.session.merge(u);
	}

As mensagens (system.out...) que estão dentro do while não aparecem na console do Eclipse, mesmo que eu retire os ifs...

3 Respostas

danielfigueiredoc

Cara já tentou da um print em rs.next() pra ver se ta true essa condição?
Se ele não ta nem entrando no while só pode ser poque algo com o rs.next() não ta satisfazendo a condição.

Ou então coloca:

# while (!rs.next()){ //só pra testar se ta vindo false, dai se der erro voce já sabe o que é o result set e pode ver no debug. System.out.println(rs.getString("dataNasc")); if (rs.getString("dataNasc") == data){ System.out.println("A data é iguallllllllllllllllllllllllllllllll"); rs.close(); stmt.close(); } ...............

Abraço!

E
java.sql.ResultSet rs = stmt.executeQuery();  
         System.out.println(rs"); // aparece na console do Eclipse  
         System.out.println(rs.first()); // ===> TIRE ESTA LINHA
         System.out.println(rs.last()); // ===> TIRE ESTA LINHA
         System.out.println(rs.getString("dataNasc")); // ===> TIRE ESTA LINHA
C
System.out.println(rs.last());

isso ai “posiciona” sua query no fim, ou seja, quando vc da um rs.next(); no seu while, já esta no fim e ele não encontra nada.
Ou retire essa linha como já foi citado, ou antes do while dá um rs.first(), pra ele retornar ao inicio da query.
Abraços

Criado 2 de outubro de 2009
Ultima resposta 2 de out. de 2009
Respostas 3
Participantes 4