Re:Inserir dados no MySql e ter o retorno da PK

4 respostas
M

Então apos fazer o insert no banco use o método getGeneratedKeys, Ele retornará a chave criada pelo banco.

segue um exemplo

PreparedStatement stmt = con.prepareStatement("inset into table(nome) values (?)");
stmt.setString(1, "Marcus");

ResultSet rs = stmt.getGeneratedKeys();
if(rs.next()){
	Long key = rs.getLong(1);
}

4 Respostas

M

Nesse caso é mais seguro vc verificar se existe algum resultado no ResultSet antes de tentar pegar o valor da chave gerada

rs = stm.getGeneratedKeys();  
if(rs.next()){  
    chave = rs.getLong(1); 
}
I

Como eu disse no topico, meu problema é:

Tenho duas tabelas :

Onde vou inserir os dados na primeira e se não der exception, preciso da PK desse registro que inseri para inserir na outra tabela. Procurei algumas soluções no google e não consegui achar.

Obrigado pela atenção,
José Carlos.

I

Entendi, vou testar assim que terminar posto o resultado…

Abraços.

editando:

stm.execute(); rs = stm.getGeneratedKeys(); rs.next(); chave = rs.getLong(1);

Após executar a query, podemos pegar a chave gerada :slight_smile: eu nao sabia obrigado Marcus.
Funciona perfeitamente.

I

marcuscruz:
Nesse caso é mais seguro vc verificar se existe algum resultado no ResultSet antes de tentar pegar o valor da chave gerada

rs = stm.getGeneratedKeys(); if(rs.next()){ chave = rs.getLong(1); }

Não é necessario, pois se acontecer algum erro eu trato no catch, nesse caso é sempre certeza que vai ter algo no resultset

Criado 2 de fevereiro de 2008
Ultima resposta 4 de fev. de 2008
Respostas 4
Participantes 2