Boa noite galera, estou utilizando o Banco de Dados PostGreSQL, a minha dúvida é o seginte…: como eu faço um evento para buscar o ultimo ID inserido no Banco de dados??? ou seja, tenho um botão e ao clicar nesse botão aparecer uma tela do tipo JOptionPane contendo o ultimo ID inserido no Banco de Dados…
Evento para buscar o ultimo ID inserido no Banco
14 Respostas
Assim que você executar o SQL de INSERT, execute o seguinte SQL:
SELECT currval('nome_da_sequence_da_sua_tabela');
[]'s
Daniel
Certo até ai eu sabía, mas isso ai só funciona após um Insert???
por que o que eu queria era um evento aparte, ou seja um botão para fazer essa listagem separado, ou seja esse select sería em um método totalmente diferente, ele não sería executado dentro do método insert, ia ser um proprio pra ele… tem como?/
SELECT MAX(campo_id) FROM tabela
acho que resolve…
Vou testar aqui…
public int informaID() throws SQLException
{
Connection conn = Conexao.getConexao();
String sql = "Select MAX(idusuario) from usuario";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
if(rs.next())
{
int valor = rs.getInt("idusuario");
}
stmt.close();
rs.close();
return valor;
}
20/09/2010 22:06:57 Apresentacao.ContatoFrame jButton2ActionPerformed
SEVERE: null
org.postgresql.util.PSQLException: A nome da coluna idusuario não foi encontrado neste ResultSet.
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.findColumn(AbstractJdbc2ResultSet.java:2502)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:2366)
at Banco.contatoDAO.informaID(contatoDAO.java:65)
at Apresentacao.ContatoFrame.jButton2ActionPerformed(ContatoFrame.java:534)
at Apresentacao.ContatoFrame.access$1000(ContatoFrame.java:29)
at Apresentacao.ContatoFrame$11.actionPerformed(ContatoFrame.java:268)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3
tem que usar o alias por conta do max pra da nome a coluna.
Select MAX(idusuario) as ‘idusuario’ from usuario
Vou testar aqui jbmsegundo :mrgreen:
ai jbmsegundo, deu certo mais ele mostra que o ultimo Id inserido foi 0 :thumbdown:
Cara joga a mesma query no console do PG. e ver o resultado
deu certo mais ele mostra que o ultimo Id inserido foi 0 :thumbdown:
Mas a variável valor tu consegues retornar ela? mesmo tu criando ela dentro do escopo do IF? Se você tem outra variável valor(de um escopo maior, classe por exemplo) provavelmente você deva estar retornando ela, pois a que vc cria na linha 10 nao existe na linha 14.
como o jbmsegundo mencionou, a variável valor só existe dentro do if…
declara ela fora do if…
quando você roda a query no PG ele retorna 0?
Ai galera solucionei o problema, era só tirar o a palavra reservada int do escopo do IF…
Vlw turma…
O problema não é com a palavra reservada INT. Por dedução você tem uma outra variável VALOR no scopo de sua classe, então sempre você retornava ele e não a variável VALOR que você CRIOU dentro do IF e atribuiu a ela o valor do Retorno.
[]s