Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Pegar campo por label não funciona no JDBC com MySQL, apenas com Index

Olá.

Estava fazendo alguns testes de conexão com banco de dados em Java e MySQL e quando tento pegar os ultimos IDs inseridos eu só consigo utilizar o resultSet.getInt(1) ao invés de resultSet.getInt("id"). Pesquisei em outros forums e o que encontrei é que isso seria um "bug" do próprio MySQL com JDBC. Alguém sabe me dizer se isso procede?

Segue código abaixo:

Connection connection = Database.getConnection();
        Statement statement = connection.createStatement();

        Timestamp date = new Timestamp(new Date().getTime());

        String SQL = "INSERT INTO `users` VALUES(NULL, 'User', 'user@user.com.br', '123', '" + date + "', NULL, NULL)";
        statement.execute(SQL, Statement.RETURN_GENERATED_KEYS);

        ResultSet resultSet = statement.getGeneratedKeys();
        resultSet.next();

        Integer id = resultSet.getInt("id");

        System.out.println(id);

        resultSet.close();
        statement.close();
        connection.close();
1 resposta
solução!

Olá, Alexander.

Segundo essa outra pergunta do fórum, o nome da coluna não é id, mas GENERATED_KEY:

https://cursos.alura.com.br/forum/topico-exception-ao-tentar-buscar-o-id-criado-no-insert-25670#543879

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software