Buscar Ultimo Registro no Banco de Dados Postgres

Boa noite sou novo aqui no fórum e estou com uma dúvida, tenho um cadastro de clientes e quando for cadastrar um novo cliente faço a chamada de um novo JDialog, neste por sua vez aparece na tela os campos para preenchimento nome, cpf, rg, endereço … e o campo “código” já vem preenchido, sendo ele único para cada cliente, para saber qual o próximo código eu acesso meu banco de dados a tabela de clientes(que possui a coluna codigo) e busco o ultimo codigo gerado, mas faço isso usando um “while” e acabo perdendo em desempenho. Como poderia fazer para acessar diretamente o ultimo registro ou o maior registro da coluna “codigo” da tabela clientes do meu banco de dados?

Segue abaixo código que estou utilizando para retornar o código:

[code]public int getCodigoBancoDeDados() {
int x = -1;
try {
Statement stm = con.createStatement();
String sql = “SELECT codigo from usuarios”;
ResultSet rs = stm.executeQuery(sql);
while (rs.next()) {
x = Integer.parseInt(rs.getString(“codigo”));
}

    } catch (SQLException ex) {
        Logger.getLogger(ConexaoPostgre.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    return x + 1;
}[/code]

Desde já agradeço pela atenção!!!

SELECT MAX(codigo) AS codigo from usuarios

A solução do Max funciona mas pode trazer problemas se o sistema possuir mais de um usuário.

Se dois usuários estiverem cadastrando clientes ao mesmo tempo ( veja bem, preencher todos os dados pode demorar alguns minutos), eles terão o mesmo id.
O que tentar salvar por último tomará um erro de chave primária duplicada.

Eu proponho que você não exiba o código para o usuário antes de gravar o cliente.
Até porque esse código é inútil antes de salvar.
Deixe o postgresql gerar o código para você (use um campo do tipo serial) e mostre para o usuário após a gravação do cliente.

Tentar então com o Count(*), vê se da certo.

Pra que voce precisa disso ? Voce ta inserindo uma chave primaria manualmente ? sem incremento ?

[quote=AbelBueno]A solução do Max funciona mas pode trazer problemas se o sistema possuir mais de um usuário.

Se dois usuários estiverem cadastrando clientes ao mesmo tempo ( veja bem, preencher todos os dados pode demorar alguns minutos), eles terão o mesmo id.
O que tentar salvar por último tomará um erro de chave primária duplicada.

Eu proponho que você não exiba o código para o usuário antes de gravar o cliente.
Até porque esse código é inútil antes de salvar.
Deixe o postgresql gerar o código para você (use um campo do tipo serial) e mostre para o usuário após a gravação do cliente.[/quote]

Isso se o programa estiver em rede e ser for um site…
Mas, tambem concordo nao tem pq mostrar codigo para usuario, criar uma SEQUENCE no postgres para criar um auto-incremento…

;]

Concordo, acho essa a melhor solução!

Desculpe a demora para responder, muito obrigado pelas dicas vou seguir elas e não vou por o código no ato do casdastro.

Valeu Mesmo

depende muito da situação, quando se trabalha com códigos…
Eu desenvolvi um projeto de controle de estoque que o cara queria saber qual era o código do atual produto a ser cadastrado, tive que utilizar o MAX para poder retornar na janela…