Problemas em mostrar ultimo registro

Pessoal…eu gostaria de que apos salvar o registro, fosse mostrado na tela qual o numero da chave que ele obteve…por ex., prrenchi os campos(menos) o codigo e cliquei no salvar, apos isso ele permanece com os campos preenchidos e no lugar do codigo que estava em branco ele mostra um numero…que eh o numero do registro…pois muito bem…fiz uma rotina para ele mostrar o numero, mas acontece que ele cria outro registro…duplica…duas pessoas com numeros diferentes, por exemplo…uma com 51 e 52…
Por Favor…alguem da uma olhadinha no meu codigo e diz o que tem de errrado…obrigada[]'s

codigo para inserir:

public void inserir(String nome, String tel, String cel, String mail){
    Statement stmt = HF.createStatement();
    try {
      stmt.executeUpdate(
          "INSERT INTO contato_agenda(nome,telefone,celular,email)VALUES ('" +
          nome.toUpperCase() + "','" + tel +
          "','" +cel+ "','" + mail +
          "')");
    }
    catch (SQLException ex) {
      JOptionPane.showMessageDialog(null,"Erro: \n"+ex);
    }
    JOptionPane.showMessageDialog(null,"Registro salvo");
   }

codigo para mostrar o ultimo:

public String mostrarUltimo(){
    String codi="";
    Statement stmt=HF.createStatement();
    try{
      ResultSet rs =
          stmt.executeQuery("select last_value from contato_agenda_codigo_seq");
      while(rs.next()){
        int cod=rs.getInt("last_value");
        codi=codi+cod;
      }
    }catch(SQLException ex){
      JOptionPane.showMessageDialog(null,"Erro em: "+ex);
    }
    return codi;
  }

acao do botao:

void jButton2_actionPerformed(ActionEvent e) {
    gb.inserir(jTextField2.getText().toUpperCase(),
    jFormattedTextField1.getText(), jFormattedTextField2.getText(),
    jTextField3.getText());
    jTextField1.setText(gb.mostrarUltimo());
  }

Onde gb = gerenteBD…

[color=“red”]Editado para conter o BBCode CODE - jeveaux[/color]

Oi

Diana, bom, este problema está acontecendo sempre que um registro é adiconado??? Tente remover manualment no DB o último registro, no teu caso, o que está em branco e faça novos testes… Não parace ter nada de errado no teu código.

Eu só mudaria o método para ahcar o último, tiraria o loop, ficando assim:

public String mostrarUltimo(){ String codi=""; Statement stmt=HF.createStatement(); try{ ResultSet rs = stmt.executeQuery("select * from contato_agenda_codigo_seq"); rs.last(); int cod=rs.getInt("last_value"); codi=codi+cod; } }catch(SQLException ex){ JOptionPane.showMessageDialog(null,"Erro em: "+ex); } return codi; }

T+

Fiz a modificacao que voce me sugeriu, mas agora ele naum retorna mais o numero…

Oi

Diana, é que eu fiz uma mudança na tua string de SQL, volta ela ao normal que vai dar certo…

O problema com o registro final em branco parou???

T+

ele simplesmente naum retorna mais o numero…
para ficar mais facil:
Estou usando o postgress…e cada tabela que vc cria ele cria outro com o nome_chave_seq…
a minha tabela eh contato_agenda…essa q tem o seq eh uma table especial que serve soh para guardar o ultimo numero…
qualquer resultset que eu fizeer para ela, ela vai me mostrar o numero…o problema eh…
se eu fizer assim: rs.last() ou rs.first() ela naum me retorna o numero…

e se eu fizer while(rs.next()){int cod=rs.getInt(“last_value”)}
ela mostra o numero e automaticamente jah adiciona um novo numero e cria um registro novo…isso que eu naum entendo…

[]'s