java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().
Até já tentei colocar esse Statement.RETURN_GENERATED_KEYS depois do comando mas continua o erro.
Alguém sabe como corrigir isso? O ID e autoincrement e preciso pegar o ID que foi criado assim que eu inserir pra poder fazer referencia em uma FK.
Não quero usar comandos que pega última tupla inserida porque pode ser que não seja o que eu inseri, imaginando acessos e gravações concorrentes.
Alguém me ajuda nisso por Deus, nao acho solução!!
a documentação diz que o driver jdbc pode não suportar essa operação, mas se for esse o caso vc deveria receber uma exceção diferente.
Sim ja fiz isso tbem e nao deu…
W
wellingtonfoz
mysql
F
FieroddPJ1 like
Bom dia!
Dá uma olhada, fiz o seguinte teste aqui e funcionou eu consigo obter o id gerado sem problemas
To usando o mysql-server-5.1.49 e o driver 5.1.16
Veja se algo está diferente e posta ai pra gente!
publicstaticvoidmain(String[]args)throwsSQLException,ClassNotFoundException{Class.forName("com.mysql.jdbc.Driver");Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mca","root","root");PreparedStatementpst=conn.prepareStatement("INSERT INTO TESTE (NOME) VALUES (?)",Statement.RETURN_GENERATED_KEYS);pst.setString(1,"FIERODD");pst.executeUpdate();ResultSetrs=pst.getGeneratedKeys();intid=0;if(rs.next()){id=rs.getInt(1);}System.out.println("Id gerado pelo insert foi "+id);}
W
wellingtonfoz
FieroddPJ:
Bom dia!
Dá uma olhada, fiz o seguinte teste aqui e funcionou eu consigo obter o id gerado sem problemas
To usando o mysql-server-5.1.49 e o driver 5.1.16
Veja se algo está diferente e posta ai pra gente!
publicstaticvoidmain(String[]args)throwsSQLException,ClassNotFoundException{Class.forName("com.mysql.jdbc.Driver");Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mca","root","root");PreparedStatementpst=conn.prepareStatement("INSERT INTO TESTE (NOME) VALUES (?)",Statement.RETURN_GENERATED_KEYS);pst.setString(1,"FIERODD");pst.executeUpdate();ResultSetrs=pst.getGeneratedKeys();intid=0;if(rs.next()){id=rs.getInt(1);}System.out.println("Id gerado pelo insert foi "+id);}
Olha apaguei o método inteiro e escrevi de novo dessa forma e deu certo! Sinceramente não sei o que aconteceu!
Valew!!!