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”));
}
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=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…
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…