Problema incremento id

Hola un saludos a todos los de la comunidad, me gustaria que me pudieran guiar en este pequeño incoveniente que tengo con mi programa en java, tengo una parte donde ingreso mis productos a la base de datos, pero digamos que este solo llega hasta 100 y de hay no pasa, se repite el mismo numero, les adjunto el codigo para que lo observen, ojala pudieran guiarme para poder solucionar este pequeño error, gracias por todo.

void codigos(){
           
        int j;
        int cont=1;
        String num="";
        String c="";
         String SQL="select max(cod_pro) from producto";

try {
            Statement st = cn.createStatement();
            ResultSet rs=st.executeQuery(SQL);
            if(rs.next())
            {              
                 c=rs.getString(1);
            }
           
           
            if(c==null){
                txtcod.setText("0001");
            }
            else{

j=Integer.parseInt(c);
                 GenerarCodigos gen= new GenerarCodigos();
                 gen.generar(j);
                 txtcod.setText(gen.serie());
               
           
            }
       
         
                 
           
           
         
        } catch (SQLException ex) {
           Logger.getLogger(IngresoProductos.class.getName()).log(Level.SEVERE, null, ex);
        }
   
   
        }

Aqui esta la clase GenerarCodigos:

public class GenerarCodigos {
   
    private long dato;
    private long cont=1;
    private String num="";

    public void generar(int dato) {
        this.dato = dato;
       
         if((this.dato>=10000000) || (this.dato<100000000))
           {
               long can=cont+this.dato;
               num = "" + can;
           }
           if((this.dato>=1000000) || (this.dato<10000000))
           {
              long can=cont+this.dato;
               num = "" + can;
           }
           if((this.dato>=100000) || (this.dato<1000000))
           {
              long can=cont+this.dato;
               num = "" + can;
           }
           if((this.dato>=10000) || (this.dato<100000))
           {
               long can=cont+this.dato;
               num = "" + can;
           }
         
           if((this.dato>=1000) || (this.dato<10000))
           {
               long can=cont+this.dato;
               num = "" + can;
           }
           if((this.dato>=100) || (this.dato<1000))
           {
               long can=cont+this.dato;
               num = "0" + can;
           }
           if((this.dato>=9) || (this.dato<100))
           {
                long can=cont+this.dato;
               num = "00" + can;
           }
           if (this.dato<9)
           {
              long can=cont+this.dato;
               num = "000" + can;
           }
         
    }

    public String serie()
    {
        return this.num;
    }
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

AND

A simple vista, creo que el error es que estás usando AND en vez de OR para tus condiciones. "si dato >=100 OR dato <1000".

Y "num" creo que debería ser una variable dentro del método, no un campo de la clase.

AUTO_INCREMENT OR SEQUENCE

Te recomiendo según la base de datos hacer uso de los AUTO_INCREMENT (MySQL) o Secuencias (Oracle), no es recomendable generar estos números manualmente desde el código java, al menos que estés controlando la sincronización o solo cuentes con un solo usuario a la ves ejecutando la aplicación.

Saludos!

Imagen de ezamudio

Y además...

No entiendo para qué tanto desmadre metiendo ceros si creo que lo único que quieren se puede lograr con un vil String.format("%04d", x)

Hola gracias a los dos por

Hola gracias a los dos por responder y aclar mis dudas, ya lo logre resolver era que en los campos de cod_pro en la base de datos no lo tenia como autoincrement, gracias por todo.

Imagen de rodrigo salado anaya

Tip

Aun así deberías tomarte unos minutos para analizar el por que usar lo que comento @ezamudio en lugar de tu método GenerarCodigos.generar(int)

http://stackoverflow.com/questions/17696946/how-to-format-a-3-digit-inte...

Saludos.