Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago M.

Banco de Dados Erro

Recommended Posts

Bom Galera,

 

Estou desenvolvendo uma instrução sql aqui, que me permite retornar um inteiro que será um identificador.

 

Entretanto, está ocorrendo uma exceção quando vou pegar o valor no ResultSet.

 

Abaixo o código :

 

public static Vector recupera_relacoes_fortes(String tabela, int inventario){  
			  
				  
			   Vector v = new Vector();  
							  
				String sqlString = "";  
				PreparedStatement stmt;   
				ResultSet result;  
				  
				   // Relacao 1  
				  sqlString = "SELECT id FROM " +tabela+ " WHERE inventario = " + inventario + " and NUM = 1";  
		   try {  
			   stmt = con.prepareStatement(sqlString);  
			 
					 
				   System.out.println(sqlString);  
				   // Executa o comando SQL, com os parâmetros fornecidos  
				   result = stmt.executeQuery();  
					 
				 /* Na linha abaixo ocorre o erro, não importa se chamo via	nome da coluna ou via número. */  
				  v.add(result.getInt("id"));  
				  v.add(result.getInt(1));  
				 
			   } catch (SQLException ex) {  
				   System.out.println("Exceção 1");  
				   ex.printStackTrace();  
			   }

 

Quando executo o comando SQL, via Query Browser, ele retorna o valor correto, com uma linha de resultado.

 

Também já verifiquei o número de linhas do resultSet no código Java é igual a 1.

 

A exceção lançada é a seguinte

 

 

java.sql.SQLException  
			at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)  
			at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)  
			at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)  
			at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:815)  
			at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2593)  
			at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2734)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deveria ter colocado a mensagem de erro, não só a pilha. SQLException pode ocorrer por N motivos. Porém, analisando seu código, constatei que você não adiantou o ponteiro do seu ResultSet.

 

// Executa o comando SQL, com os parâmetros fornecidos  
result = stmt.executeQuery();  

// Normalmente utiliza-se estrutura while					 
while(result.next()) {
   v.add(result.getInt("id"));  
   v.add(result.getInt(1));  
}

Quando você tem certeza de que a consulta retornará apenas uma linha, você pode fazer assim:

result.next()
v.add(result.getInt("id"));  
v.add(result.getInt(1));

Se você está utilizando PreparedStatement, por que não constroi a query corretamente?

sqlString = "SELECT id FROM tabela WHERE inventario = ? and NUM = 1";
stmt.setObject(1, valor);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.