2
respostas

Erro no getGenaratedKeys()

Bom dia, fiz exatamente como está no vídeo. A parte de inserir os dados funciona, porém ao solicitar o retorno da Id criada, está retornando o seguinte erro...

Exception in thread "main" java.sql.SQLException: Tipo de coluna inválido: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor at oracle.jdbc.driver.GeneratedAccessor.getInt(GeneratedAccessor.java:388) at oracle.jdbc.driver.GeneratedStatement.getInt(GeneratedStatement.java:171) at oracle.jdbc.driver.GeneratedScrollableResultSet.getInt(GeneratedScrollableResultSet.java:269) at br.com.comex.main.MainInsercaoCategoria.main(MainInsercaoCategoria.java:32)

Como disse, todo o resto funciona normalmente...

2 respostas

public class MainInsercaoCategoria {

public static void main(String[] args) throws SQLException {

    ConnectionFactory connectionFactory= new ConnectionFactory();
    Connection connection = connectionFactory.recuperaConexao();


    Statement statement = connection.createStatement();
    statement.execute("INSERT INTO comex.categoria (nome, status) VALUES ('INFORMÁTICA', 'ATIVA')", Statement.RETURN_GENERATED_KEYS);

    ResultSet result = statement.getGeneratedKeys();   //30
        while(result.next()) {                         //31
        Integer id = result.getInt(1);                 //32
        System.out.println("O id criado foi: " + id);  //33
    }

    System.out.println("Dados inseridos com sucesso, conexão encerrada.");
    connection.close();
}    

//pra concluir, segue linhas de comando, segundo a exception, o erro está na linha 32.

Leandro, boa tarde. Vc está tentando chamar um método que não existe. Qnd vc faz statement.getGeneratedKeys( ), ele retorna apenas o valor da primaryKey criada, ou seja, um número inteiro, logo não tem como vc chamar getInt( ). Da uma olhadinha no código do curso e vc irá perceber que está diferente =)