Estou desenvolvendo um programa de estoque e gostaria de saber como eu faço para que o codigo do cliente seja gerado automaticamente e apareça no JTextFiend antes de gravar no bd:
Eu trabalhava com uma liguagem chamada CA-Dbfast20 e o codigo era assim
Cara, se você usar campo autoincrement como o amigo marcio indicou não vai servir
necessariamente para o que deseja…
Campos autoincrement’s são gerados na hora da gravação no BD…
Faça o seguinte…
Crie um método que incremente com código SQL, tipo assim:
private void incrementarCodigo() {
int codigoIncrementado;
conexao.abrirConexao();
try {
Statement stmt = conexao.con.CreateStatement();
ResultSet rs = stmt.executeQuery("SELECT MAX(Codigo_Cli) as UltimoCodigo FROM TabelaClientes");
if (rs.next()) {
codigoIncrementado = rs.getInt(UltimoCodigo);
++codigoIncrementado;
}
rs.close();
stmt.close();
catch(SQLException e) {
e.printStackTrace();
}
}
E pronto!
Agora pode mostrar no seu JTextField assim:
editCodigo.setText(codigoIncrementado);
E na hora de gravar no banco jogue o conteúdo do seu JTextField no campo Código do Cliente…
Porém o campo no MySQL não pode estar como autoIncrement…
O q o Linkel disse acontece realmente, ou seja vc seta o valor max e inclui porém este valor max + 1 nem sempre é o codigo real do proximo registro pois ele pode ter sido excluido então gravaria como +2.
E o ideal como ele mesmo disse vc faria com o valor max só q este tipo de cmpo não pode ser auto increment.
Agora minha Duvida para quem manja de MySQL:???
Eu não sei em termos de performace pois o ‘select max(valor)’ em uma tabela com muitos registros…muitos mesmo!!! se vai rodar legal???
No BD Oracle tem um comando (nextval) que vc pega o valor do proximo campo auto-increment q é feito com outro comando (sequence). Isso tem como fazer no MySQL???