Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Exception in thread "main" java.sql.SQLException: Column Index out of range, 2 > 1.

Bom dia João Victor Fiz uma pequena modificação no código que retorna a mensagem com o índice inserido para que ele retorne também o nome do produto inserido, porém estou recebendo a Exception in thread "main" java.sql.SQLException: Column Index out of range, 2 > 1. . Segundo o que entendi da explicação no método getString podemos receber como parâmetro o label ou o índice da coluna do banco de dados correto? Ou seja, se eu quisesse recuperar o nome pelo label faria rst.getString("NOME"), se fosse pela coluna seria rst.getString(2). Tentei das duas formas e continuo recebendo a Exception. Segue o código abaixo.

Obrigado.

public class TestaInsercao {

    public static void main(String[] args) throws SQLException {
        ConnectionFactory factory = new ConnectionFactory();
        Connection connection = factory.recuperarConexao();

        Statement stm = connection.createStatement();
        stm.execute("INSERT INTO PRODUTO (nome, descricao)  VALUES ('Mouse sem fio','Logitech M170 com Design Ambidestro Compacto Conexão USB')", 
                Statement.RETURN_GENERATED_KEYS);

        ResultSet rst = stm.getGeneratedKeys();

        while(rst.next()) {
            Integer id = rst.getInt(1);
            String nome = rst.getString(2); //A Exception ocorre aqui!!!
            System.out.println("Produto: " + nome + " inserido com sucesso!/n"
                    + "O id criado foi: " + id);
        }

    }

}
2 respostas
solução!

Frederico, bom dia. Você está recebendo essa exceção, pois no insert o único retorno que é feito é do ID. Quando você tenta pegar o nome também, não existe a informação, então por isso ele fala que index 2 é > do que 1, ou seja, só uma informação é retornada. =)

Ok, agora entendi! Obrigado