Galeraa é o seguinte eu tenho uma tela de lançamento de viagens ao lançar a viagem quero pegar o id da viagem para fazer um insert em uma outra tabela. Alguem saberia como fazer isso ?
Você deve usar a constante RETURN_GENERATED_KEYS
, por exemplo:
try(PreparedStatement pstmt = conectaBancoDeDados
.prepareStatement(stringSQLInsercao,
PreparedStatement.RETURN_GENERATED_KEYS)){
[...]
}
O método então, nesse caso terá retorno int ou long, conforme o tipo de dado do seu id. Na chamada do método que realiza a operação se inserção, tu vai atribuir a uma variável para poder utilizar o o id gerado, como queira.
Exemplo:
1 - pacote DAO
public static int inserir(bean.Raca raca) throws SQLException{
int codigo = 0;
[...]
try(PreparedStatement pstmt = conectaBancoDeDados
.prepareStatement(stringSQLInsercao,
PreparedStatement.RETURN_GENERATED_KEYS)){
try(ResultSet rstSet = pstmt.getGeneratedKeys()){
if(rstSet != null){
rstSet.next();
codigo = rstSet.getLong(1);
}
rstSet.close();
}
pstmt.close();
}
conectaBancoDeDados.close();
}
return codigo;
}
2 - Pacote View
int codigo = 1;
codigo = dao.Raca.inserir(retornarRaca());
vc pode fazer isso utilizando trigger.
Para que usar trigger se a linguagem Java oferece a função nativamente?
rapaz, dependendo do caso é mais viável utilizar trigger.
Bom, nesse caso, por falta de uma resposta ele tem duas.
Concordo, não é necessário dar uma volta toda (usando Trigger) pra pegar o último ID cadastrado.
Bom dia Galera, Obrigado a todos pela ajud, Consegui do seguinte modo:
ResultSet rs = pst.getGeneratedKeys();
if (rs.next()) {
lastId = rs.getInt(1);
System.out.println(lastId);
}
onde lastId é uma variavel global. Pois no meu caso vou trabalhar em varias parte do projeto com esse id