Thiago M. 0 Denunciar post Postado Julho 3, 2009 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
Vergil 15 Denunciar post Postado Julho 3, 2009 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