Pegar id de cliente que acabou de ser inserido

22/08/2018

0

Boa noite!!

Gostaria de uma ajuda… Ao salvar meu cadastro no banco gostaria de receber o id que esse cadastro foi gerado pois o id é autoincrement, segue método Salvar class DAO:

public void salvar(Cliente cliente) throws SQLException {
// int id_gerado = 0;
Connection con = Conexao.Conexao();
String sql;
PreparedStatement pst = null;


try {
sql = "INSERT INTO cliente VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
pst = con.prepareStatement(sql);
pst.setInt(1, 0);
pst.setString(2, cliente.getNome());
pst.setString(3, cliente.getCpf());
pst.setString(4, cliente.getRg());
pst.setString(5, cliente.getRua());
pst.setString(6, cliente.getNumero());
pst.setString(7, cliente.getComplemento());
pst.setString(8, cliente.getBairro());
pst.setString(9, cliente.getCidade());
pst.setString(10, cliente.getUf());
pst.setString(11, cliente.getData_nascimento());
pst.setString(12, cliente.getCep());
pst.setString(13, cliente.getEmail());
pst.setString(14, cliente.getNacionalidade());
pst.setString(15, cliente.getNaturalidade());
pst.setString(16, cliente.getTelefone());
pst.setString(17, cliente.getCelular());
pst.setString(18, cliente.getNome_pai());
pst.setString(19, cliente.getNome_mae());
pst.setString(20, cliente.getProfissao());
pst.setFloat(21, cliente.getRenda());
pst.setString(22, cliente.getNome_trabalho());
pst.setString(23, cliente.getEnd_trabalho());
pst.setString(24, cliente.getEstado_civil());
pst.setString(25, cliente.getNome_conjude());
pst.setString(26, cliente.getCpf_conjude());
pst.setString(27, cliente.getRg_conjude());
pst.setString(28, cliente.getTelefone_conjude());
pst.setString(29, cliente.getCelular_conjude());
pst.setString(30, cliente.getNome_pai_conjude());
pst.setString(31, cliente.getNome_mae_conjude());
pst.setString(32, cliente.getBanco());
pst.setString(33, cliente.getTipo_conta());
pst.setString(34, cliente.getAgencia());
pst.setString(35, cliente.getConta_banco());
pst.setString(36, cliente.getCidade_banco());
pst.setString(37, cliente.getObservacao());
pst.setString(38, cliente.getAquisicao());
pst.execute();

JOptionPane.showMessageDialog(null, "Salvo com Sucesso!! Cliente ID: "+id_gerado);

} catch (HeadlessException | SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao Salvar!!" + ex);
} finally {
Conexao.closeConnection(con, pst);
}

}
Deyvid Paula

Deyvid Paula

Responder

Post mais votado

28/08/2018

Nessa linha
pst = con.prepareStatement(sql);

substitua por
pst = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

esse novo parâmetro vai dizer para o objeto que você quer obter o valor da chave gerada na tabela.
Depois, você vai recuperar o id da seguinte forma
pst.execute();

ResultSet rs = pst.getGeneratedKeys();
int id = 0;
if(rs.next()){
    id = rs.getInt(1);
}

Você precisa usar o método getGeneratedKeys() para recuperar a chave gerada. O retorno é inserido em um ResultSet, como acontece com um consulta, assim, basta agora acessar o índice 1 do ResultSet para atribuir o retorno em uma variável.

Marcio Souza

Marcio Souza
Responder

Mais Posts

23/08/2018

Daniel Araújo

Bom dia Deyvid!
Vê se isso te ajuda:
http://www.guj.com.br/t/pegar-ultimo-id-auto-increment-inserido-na-base-resolvido/290750/8
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar