Olá eu sou novo no forum e não sei se já tem aqui no forúm algum gerador de código, mais eu vou mandar o meu código, para ver se vocês gostam.
ResultSetrs;publicvoidgeraCod(){rs=cnx.consulte("SELECT codcliente, nome, telefone, endereco, rg, cpf, obs from cliente order by codcliente;");try{intid;rs.last();id=rs.getInt(1);id=id+1;fldCodigo.setText(""+id+"");}catch(SQLExceptionsqle){Stringmensagem="Erro: "+sqle.getErrorCode()+" "+sqle.getMessage();JOptionPane.showMessageDialog(null,mensagem,"Erro",0);}}
Daí é só adicionar o geraCod() em algum lugar.
Espero ter ajudado alguém.
Cara, pouco mexi com JDBC, mas sem que tem uma opção que vc manda ele salvar e ele retorna o código pra vc. Se estivesse usando Hibernate ou JPA eu poderia te ajudar. Essa tua solução tem vários problemas:
pra que selecionar vários campos da tabela se vc só precisa do código
no SQL vc poderia tem a opção de só pegar um resultado, aquele que tiver ID máximo.
E se várias Threads acessarem, isso vai fazer com que dois elementos possuam mesmo ID.
É só sua aplicação Java que vai acessar o BD? pq se nao for, pode ter ocorrer o mesmo problema descrito no problema anterior
Vc já tentou ver se o método que vc usa pra salvar não retorna um Object? pq se retornar, ele retornará sua chave, aí vc pode colocar no BD o ID como autoincrement ou algum tipo de gerador do próprio BD.
Melhor dizendo, para aplicações tipo a minha, foi uma solução que eu consegui encontrar, além do que eu sou ainda programador amador :oops:, mais o código do juruna é melhor do que o meu , mas mesmo assim, continuo com o meu, só pelo duro esforço que eu tive.
renzonuccitelli
Opa, o código nao foi meu nao…rs. Mas então, quando comecei, também fui logo fazendo um projeto pra facu, usando JDBC na raça. Aí perguntei pra um amigo que manjava mais, ele me indicou o Hibernate, pois ficar mexendo com JDBC puro é fogo, pelo menos eu acho muito chato. Só coloquei os problemas que encontrei para te alertar, se vc já sabia, entao melhor ainda.
Já quanto a acesso só por uma Thread, toma cuidado. Se tiver trabalhando com componentes visuais, como frames, não esqueça que cada um possui sua própria Thread furar sua suposição de acesso somente por uma Thread. Enfim, retornando um ResultSet muito grande também pode te dar problema de estouro de memória. Mas usa essa solução sim, ainda mais se o BD nao for grande.