Org.postgresql.util.PSQLException

4 respostas
Elisa_TADS

Olá pessoal, estou fazendo um sistema para gerenciamento de ordens de serviços
Quando executo uma consulta para verificar se um determinado equipamento já esta cadastrado no sistema parece a mensagem de erro: org.postgresql.util.PSQLException: ResultSet não está posicionado corretamente, talvez você precise chamar next.
Mas, apesar do erro o sistema realiza a consulta e retorna os valores corretamente.
Já fiz de tudo e o erro continua…

Arquivo de conexao

public boolean conexaobanco(){
		try{
			Class.forName("org.postgresql.Driver");
		
		}catch(ClassNotFoundException erro){//Erro no drive - drive nao encontrado
			JOptionPane.showMessageDialog(null, " Drive JBDC não localizado!\n"+erro+" \nContate o Administrador do Sistema.", "ERRO", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		try{
			this.conexao=DriverManager.getConnection("jbdc:postgresql://localhost/SIGOS","postgres","XXXXX");
		}catch(SQLException ErroSQLBanco){//Erro de conexao com o banco de dados
			JOptionPane.showMessageDialog(null,"Conexão com o banco de dados não realizada com sucesso!\n "+ ErroSQLBanco+" \nContate o Administrador do Sistema.", "ERRO", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		try {
	        this.statement = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
	        } catch (SQLException erroSatatement) {
	            JOptionPane.showMessageDialog(null,"Não foi possível criar a statement!\n "+ erroSatatement+" \nContate o Administrador do Sistema.", "ERRO", JOptionPane.ERROR_MESSAGE);
				return false;
	        }
	        
		return true;
	}
	
}

Arquivo de bd_equipamento

public Integer ProcuraNumPatrimonio(Integer num_patrimonio){//O ERRO APARECE NESSA FUNCAO
		String query=null;
		bd_conexao querybd=new bd_conexao();
		
		query="SELECT num_patrimonio FROM equipamento WHERE num_patrimonio="+num_patrimonio+";";
		
		if(querybd.conexaobanco()){
			ResultSet resposta;
			try{
				resposta=querybd.executeconsulta(query);
				resposta.first();
				resposta.next();
				return resposta.getInt("num_patrimonio");
				
			}catch(SQLException errosql){
				JOptionPane.showMessageDialog(null,"A execução do query não foi realizada com sucesso!\n "+ errosql+" \nContate o Administrador do Sistema.", "ERRO", JOptionPane.ERROR_MESSAGE);
			}
			
			
		}//fim if
		
		return null;//erro de sql
	
	}//fim ProcuraNumPatrimonio

4 Respostas

Elisa_TADS

Alguém poderia me ajudar?

Ficarei muito grata!

rogelgarcia

Observações:

  • Estudar um pouco mais de Java… e seguir os padrões de nomeclatura
  • Não utilizar códigos, a nao ser que sejam necessários… como no exemplo:
conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
//se nao tiver precisando disso tudo.. use apenas
conexao.createStatement();
  • Organize seu código para em caso de erros lançar exceções. Ao invés de mostrar caixas de dialogo e retornar null… quem deve mostrar a mensagem é a parte de visão da sua app…

Sobre o seu problema… tente retirar essa linha:

resposta.first();

Se não funcionar… mande imprimir o stacktrace da exceção… e veja em qual linha está ocorrendo o erro… vai facilitar a identificaçao e correçao do mesmo

Elisa_TADS

Usando apenas conexao.createStatement(); e retirando o resposta.first(); o erro continua… Já tinha tentado isso…

ERRO:
org.postgresql.util.PSQLException: ResultSet não está posicionado corretamente, talvez você precise chamar next.

Duvida…

Mas sem o ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY como vou fazer para rolar nos valores retornados quando for mais de uma linha?

Essa é a minha duvida e não encontrei em minhas pesquisas.

rogelgarcia

Quando for mais de uma linha vc faz

while(rs.next()){ //operacao com cada linha }

Nao estou vendo o erro no seu código… tente fazer um exemplo simples…que apenas faça o select pra ver se funciona…

Se nao funcionar… pode ser que o driver que está usando seja imcompativel com a versao do seu banco…

Criado 7 de julho de 2010
Ultima resposta 8 de jul. de 2010
Respostas 4
Participantes 2