Erro no while(rs.next()) dúvida simples

3 respostas
xpaulinhox

Galera estou começando agora e queria ao menos entender o porque do erro, mesmo que não seja a melhor forma de fazer.
Bom é o seguinte tenho minha classe de banco assim.
OBS: só vou por o principal.

public ResultSet select(String table, String fields){		
		//O parâmetro fields deve vir separado por vírgulas
		if(status){			
			String sql = "select " + "fields " + "from " + table + ";";
			try{				
				return stm.executeQuery(sql);			
				
			}catch(SQLException e){
				error = e.getMessage();				
				return null;
			}
			
			
			
			
		}
		else{
			error = "Não está conectado";
			return null;
		}
			
	}

e tenho minha classe principal assim:

rs = db.select("cargo", "id_cargo,nome,descricao");
		
		try{
			while(rs.next()){				
				System.out.println("sfd");
				System.out.println("Id - " + rs.getInt("id_cargo"));
				System.out.println("Nome - " + rs.getString("nome"));
				System.out.println("Descrição - " + rs.getString("descricao"));
								
			}

				
		}catch(SQLException e){
			System.out.println(e.getMessage());
		}

Não dá erro ao compilar mas quando executo apenas dá o erro:

Exception in thread “main” java.lang.NullPointerException
at principal.Main.main(Main.java:32)

A linha 32 é a linha que está o while(rs.next())

Alguém pode me ajudar a entender?

Muito Grato.

3 Respostas

rmendes08

O erro acontece porque a variável rs é nula. Ou seja, algum erro acontece no corpo do método select e o valor retornado é null. Obviamente, fica difícil descobrir qual é o erro exatamente porque captura a exceção original e retorna o valor null, como se nada tivesse acontecido. A não ser que você trate adequadamente a exceção SQLException, você deve deixar o programa para por lá mesmo, mas isso que você faz, capturar a exceção e retornar null é simplesmente terrível, e uma das piores maneiras que se tem para esconder bugs.

L

vc tem um campo chamada “fields” pq vc não está usando o parametro passado da uma olhada ae :smiley:

xpaulinhox

luiguik2 era exatamente isso. valeu cara.

Criado 1 de julho de 2010
Ultima resposta 1 de jul. de 2010
Respostas 3
Participantes 3