JDBC urgente

Alguem poderia me explicar porque uma mesma instrução funciona em uma situação em não em outra?? Dêem uma olhada no código abaixo:

O primeito rs.getInt(4) não funciona enquanto que o segundo funciona corretamente. Será que pode ser o tipo de ResultSet? Somente leitura ou alguma coisa desse tipo?

import java.sql.*;

public class ConnectEmpregos {
	
	public static void main(String args[]) {
		int i;
		boolean verifica = false;
		ConnectSql cs = new ConnectSql();
		
		try {
		ResultSet rs = cs.sqlConsulta();
		while (rs.next())  {
			i = rs.getInt(4);
			if (i > 0) {
			     System.out.println(rs.getInt(4));
                                                }
		}
		} catch (SQLException e){
			System.out.println(e);
		}
		
		verifica = cs.DesconnectSql();
		if (verifica) {
			System.out.println("Deu certo");
		}
	}
}

Qual seria esse segundo? o seu codigo esta com uma logica confusa…mas explica ai melhor que tentarei te ajudar.

Falow

como que o primeiro nao funciona, se voce chega a ver o resultado do segundo e ele depende do IF baseado no primeiro?

nao etnendi

parece que esta funcionando

O que eu acabei de perceber é que não posso usar o método rs.getXXX() mais que uma vez em um mesmo módulo. Se vocês observarem no código de exemplo eu tento capturar duas vezes o mesmo campo do ResultSet; se eu deixar apenas uma vez ele funciona o problema é que com isto eu não posso capturar os outros campos do ResultSet.

Paulo

Eu só consigo ver o resultado do segundo se eu deixar o primeiro como comentário.

Ao inves de fazer

  i = rs.getInt(4);
         if (i > 0) {
              System.out.println(rs.getInt(4)); 

simplesmente faca

  i = rs.getInt(4);
         if (i > 0) {
              System.out.println(i); 

depois, voce pode sim chamar o meto getXXX varias vezes seguidas que voce vai sempre pegar o mesmo valor. O valor so se altera quando voce chamar o metodo next() do ResultSet.

Rafael

Rafael

Você tem toda razão e o seu método funciona, porém eu percebi que mesmo dentro de um registro o cursor não aceita voltar; por exemplo se eu chamar o método rs.getInt(2) eu não poderei mais chamar o método rs.getString(1) porque será gerado um SQLException.

Seguindo sua dica estou fazendo o seguinte:

while (rs.next()) {
String nome = getString(1);
int id = getInt(2);


}

Falou.

Roberto