elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problemas con next()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con next()  (Leído 2,135 veces)
Nafko

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Problemas con next()
« en: 20 Mayo 2015, 01:43 am »

Hola....

Tengo un pequeño problema, pero antes, explico que tengo una base de datos (bbdd), una clase ConexionBD y un formulario (FX), todo marcha bien hasta que, tenia que hacer la búsqueda por cliente, perfecto pero cuando no encontraba ese cliente por a, b o c motivo requería que entrara a otro método para hacer otra búsqueda por servicio esto lo hice con un if else, mediante el uso de next(), si next()==true entra en un ciclo while y muestra los datos en una tabla pero si next()==false pasa al else y se realiza una búsqueda por servicio pero al hacer eso el next() cambia de manera fantasmagórica dejo la base de datos y el proyecto ademas de las lineas de código que me tienen complicado...

Espero sus respuestas desde ya gracias :)

Cabe destacar que uso netbeans 8.0.1

Código:
private void BuscarActionPerformed(java.awt.event.ActionEvent evt) {                                       
        if (ingbuscar.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Ingrese un Numero de Factura");
        }
        DefaultTableModel modelo=(DefaultTableModel)Resultado.getModel();
        ConexionBD consultar=new ConexionBD();
        try {
            
            ResultSet registro=consultar.Consultar(Integer.parseInt(String.valueOf(ingbuscar.getText())));
            
            if (registro.next()) { //aqui se origina el problema, entra en true y sale en false
            
                
                
               // registro.first();
              
                int i=0;
                
                while (registro.next()==true) {
                    JOptionPane.showMessageDialog(null, "Cliente fue Encontrado");
                    modelo.addRow(new Object[1]);
                    Resultado.setValueAt(registro.getString("Nombre"),i,0);
                    Resultado.setValueAt(registro.getString("Apellido"),i,1);
                    Resultado.setValueAt(registro.getString("Rut"),i,2);
                    Resultado.setValueAt(registro.getString("Cliente"),i,3);
                    Resultado.setValueAt(registro.getString("Servicio"),i,4);
                    Resultado.setValueAt(registro.getString("Medidor"),i,5);
                    Resultado.setValueAt(registro.getString("Costo"),i,6);
                    Resultado.setValueAt(registro.getString("Total"),i,7);
                    i++;
                         //JOptionPane.showMessageDialog(null, "Entro");
                }}
            else{
            
            
                JOptionPane.showMessageDialog(null, "Cliente no Encontrado, Se Buscara Servicio... :)");
            }
            
            
            
            
            

            ingbuscar.setText(null);
            
        } catch (InstantiationException ex) {
            Logger.getLogger(Formulario.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Error "+ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Formulario.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Error "+ex);
        } catch (SQLException ex) {
            Logger.getLogger(Formulario.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Error "+ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(Formulario.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Error "+ex);
        }
    }

Los archivos están aquí:

https://mega.co.nz/#!zBYzHDSD!orUJXOvNCESERpx1Ko2FDb1F34Rjzs0VI2zTrGs9VtA

FX: Archivo Netbeans
MySQL: Base de Datos (esta dentro se llama bbdd)


« Última modificación: 20 Mayo 2015, 02:11 am por Nafko » En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: Problemas con next()
« Respuesta #1 en: 20 Mayo 2015, 20:51 pm »

Hola:

registro.next() además de devolver true ofalse, mueve al siguiente registro, por lo que con

if (registro.next())

estás desperdiciando el primer registro. Si solo hay uno, el siguiente

while (registro.next()==true)

será false.

No necesitas el if. Si quieres sacar un aviso no resultados, verifica simplemente si al terminar el bucle el contador i es cero.

Se bueno.


En línea

Nafko

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Problemas con next()
« Respuesta #2 en: 20 Mayo 2015, 21:55 pm »

Muchas gracias ahora entiendo el problema al entrar al primer next() tiraba un true pero movía al siguiente registro que estaba en false y por eso no entraba en el ciclo while pero como podría hacer una validación para poder hacer correr otro método de búsqueda por servicio si el registro viene en false, porque si lo hago por el if else me cambiaría de true a false???
En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: Problemas con next()
« Respuesta #3 en: 21 Mayo 2015, 20:07 pm »

Hola:

Lo que te he comentado, al final del bucle mira el contador i, si es cero, es que el bucle no ha entrado y por tanto no había registros.

Se bueno.
En línea

Nafko

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Problemas con next()
« Respuesta #4 en: 21 Mayo 2015, 21:03 pm »

Gracias al parecer no había captado eso muchas gracias :)

Esto es lo que hice:


Código:
                int i=0;
               
                while (registro.next()) {
                    JOptionPane.showMessageDialog(null, "Cliente fue Encontrado");
                    modelo.addRow(new Object[1]);
                    Resultado.setValueAt(registro.getString("Nombre"),i,0);
                    Resultado.setValueAt(registro.getString("Apellido"),i,1);
                    Resultado.setValueAt(registro.getString("Rut"),i,2);
                    Resultado.setValueAt(registro.getString("Cliente"),i,3);
                    Resultado.setValueAt(registro.getString("Servicio"),i,4);
                    Resultado.setValueAt(registro.getString("Medidor"),i,5);
                    Resultado.setValueAt(registro.getString("Costo"),i,6);
                    Resultado.setValueAt(registro.getString("Total"),i,7);
                    i++;
                         
                }
               
                if (i==0) {
                    ConexionBD conn=new ConexionBD();
            ResultSet registroCS=conn.ConsultarServicio(Integer.parseInt(String.valueOf(ingbuscar.getText())));
               
                JOptionPane.showMessageDialog(null, "Se Buscara por Servicio");
               
                    while (registroCS.next()) {
                    JOptionPane.showMessageDialog(null, "Cliente fue Encontrado");
                    modelo.addRow(new Object[1]);
                    Resultado.setValueAt(registroCS.getString("Nombre"),i,0);
                    Resultado.setValueAt(registroCS.getString("Apellido"),i,1);
                    Resultado.setValueAt(registroCS.getString("Rut"),i,2);
                    Resultado.setValueAt(registroCS.getString("Cliente"),i,3);
                    Resultado.setValueAt(registroCS.getString("Servicio"),i,4);
                    Resultado.setValueAt(registroCS.getString("Medidor"),i,5);
                    Resultado.setValueAt(registroCS.getString("Costo"),i,6);
                    Resultado.setValueAt(registroCS.getString("Total"),i,7);
                    i++;
                    }
               
                }
« Última modificación: 21 Mayo 2015, 23:50 pm por Nafko » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines