Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] NullPointException al devolver una array

Estas en el tema de NullPointException al devolver una array en el foro de Java en Foros del Web. Buenas tardes, Estoy haciendo un programa, una parte del programa consta de una clase principal con todos los graficos, otra clase con sentencias sql, y ...
  #1 (permalink)  
Antiguo 21/09/2016, 13:59
 
Fecha de Ingreso: julio-2014
Mensajes: 5
Antigüedad: 10 años, 4 meses
Puntos: 0
NullPointException al devolver una array

Buenas tardes,
Estoy haciendo un programa, una parte del programa consta de una clase principal con todos los graficos, otra clase con sentencias sql, y una intermedia donde pasa y recoje los datos.

Entonces en la primera clase, hay una tabla con su defaultTableModel, donde llamo un metodo para cargar una bd y llenar los datos:

Clase principal
Código:
 tabti.cargarTickets();
Despues tengo la clase intermedia donde hay el metodo llenarTickets, que tiene que que pide los datos a la clase con las sentencias, esta intermedia llama un metodo que le tiene que devolver una array con los datis, y asi el metodo llenarTickets llena el DefaultTableModel:


Código:
public void llenarTickets() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException
    {
        ResultSet resultado;
        System.out.print("PRIMERO");
        bdt = new bdtickets();

        resultado = bdt.consultarTickets();
        while (resultado.next())
        {
            System.out.print(resultado.getString("ID")+"holaaaa");
            tickets = new Vector();
            tickets.addElement(resultado.getString("ID"));
            tickets.addElement(resultado.getString("FECHA"));
            tickets.addElement(resultado.getString("IMPORTE"));
            tablaTickets.addRow(tickets);
            System.out.print(resultado.getString("ID"));
        }
        
        
    }
Aqui es donde tengo el problema, al llamar resultado = bdt.consultarTickets(); me da el nullpoint exception.

Pongo el metodo de la 3a clase donde hago la consulta a mysql:

Código:
public ResultSet consultarTickets() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException
    {
        conectar.Connection();
        String consulta = "SELECT * FROM TICKETSDIARIOS ORDER BY ID";    
        array = statment.executeQuery(consulta);
        return array; 
       
    }
Muchas gracias!
  #2 (permalink)  
Antiguo 22/09/2016, 00:57
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: NullPointException al devolver una array

Porque usas en los métodos variables de forma local que no has declarado dentro del método? Donde están declaradas las variables: bdt, tickets, tablaTickets, conectar y array?

Por último, y no menos importante, sabes que en java se pueden usar parámetros para llamar a las funciones?
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 22/09/2016, 02:36
 
Fecha de Ingreso: julio-2014
Mensajes: 5
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: NullPointException al devolver una array

Perdon, pondre el codigo entero:

Clase principal

Código:
public class V_frame extends java.awt.Frame {

    public bdtickets bdtickets;
    public DefaultTableModel tablaTickets;
    public accionTickets tabti;
    public ResultSet a =null;
    
    public V_frame() throws SQLException {
        initComponents();
        
        tabti = new accionTickets(this);
        
        
        JFrame fprincipal = new JFrame("FACTURACIÓ VERDULERIA");
        fprincipal.setLocationRelativeTo(null);
        fprincipal.setLayout(new BorderLayout());
        setExtendedState(fprincipal.MAXIMIZED_BOTH);
        

        tabti.cargarTickets();
        try {
            tabti.llenarTickets(); //ESTE ES EL METODO QUE LLAMO PARA CARGAR DATOS
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(V_frame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(V_frame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(V_frame.class.getName()).log(Level.SEVERE, null, ex);
        }

        fprincipal.pack();
SEGUNDA CLASE:

Código:
public class accionTickets {
    
public DefaultTableModel tablaTickets;
public V_frame principal;
public bdtickets bdt;
public Vector tickets;
public ResultSet resultado;
//private ResultSet resultado;
    public accionTickets(V_frame principal)
    {
        bdt = new bdtickets();
        this.principal=principal;
    }
    
    public void cargarTickets()
    {
        tablaTickets = new DefaultTableModel(new String[]{"ID","FECHA","IMPORTE"},0);
        principal.getTblTickets().setModel(tablaTickets);

    }
    public void llenarTickets() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException
    {
        ResultSet resultado;
        System.out.print("PRIMERO");
        bdt = new bdtickets();

        resultado = bdt.consultarTickets();//AQUI LLAMO AL METODO PARA HACER LA CONSULTA A LA BD
        while (resultado.next())
        {
            System.out.print(resultado.getString("ID")+"holaaaa");
            tickets = new Vector();
            tickets.addElement(resultado.getString("ID"));
            tickets.addElement(resultado.getString("FECHA"));
            tickets.addElement(resultado.getString("IMPORTE"));
            tablaTickets.addRow(tickets);
            System.out.print(resultado.getString("ID"));
        }
        
        
    }
    
}

3A CLASE, DONDE HAY LA CONSULTA A LA BD:

Código:
public class bdtickets {
 
    private bdprincipal conectar;
    private Statement statment;
    public ArrayList lista;
    public ResultSet array;
    
    public bdtickets()
    {
        conectar = new bdprincipal();
    }
    public ResultSet consultarTickets() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException
    {
        conectar.Connection();
        String consulta = "SELECT * FROM TICKETSDIARIOS ORDER BY ID";    
        array = statment.executeQuery(consulta);
        return array; 
       
    }
    
}
  #4 (permalink)  
Antiguo 22/09/2016, 10:18
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: NullPointException al devolver una array

Hola:

Un NullPointer es bastante fácil de depurar. En la traza del NullPointer, mira la primera línea de java que sea tuya. Si es en linea que dices (que no parece ser)

resultado = bdt.consultarTickets();

es porque bdt es null y no puedes llamar a un método de un null. Pero en este caso no es ahí, puesto que justo antes de la llamada tienes

bdt = new bdtickets();
resultado = bdt.consultarTickets();

Asi que el error realmente está dentro del método consultarTickets(), tendrías que ver la línea exacta. Por ejemplo, si la línea es

conectar.Connection();

es porque conectgar es null y no se puede llamar a Connection() de null, Pero tampoco tiene pinta porque en el constructor haces un conectar = new bdprincipal(), así que la otra posibilidad es

array = statment.executeQuery(consulta);

es porque statement es null .... ¿dónde creas un statement para poder llamar a executeQuery() ?

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 22/09/2016, 13:14
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: NullPointException al devolver una array

Este error es por realizar malas prácticas de programación, precisamente por usar variables globales de forma local. Repito, para algo existen los parámetros en las funciones.
__________________
Aviso: No se resuelven dudas por MP!
  #6 (permalink)  
Antiguo 22/09/2016, 13:52
 
Fecha de Ingreso: julio-2014
Mensajes: 5
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: NullPointException al devolver una array

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Un NullPointer es bastante fácil de depurar. En la traza del NullPointer, mira la primera línea de java que sea tuya. Si es en linea que dices (que no parece ser)

resultado = bdt.consultarTickets();

es porque bdt es null y no puedes llamar a un método de un null. Pero en este caso no es ahí, puesto que justo antes de la llamada tienes

bdt = new bdtickets();
resultado = bdt.consultarTickets();

Asi que el error realmente está dentro del método consultarTickets(), tendrías que ver la línea exacta. Por ejemplo, si la línea es

conectar.Connection();

es porque conectgar es null y no se puede llamar a Connection() de null, Pero tampoco tiene pinta porque en el constructor haces un conectar = new bdprincipal(), así que la otra posibilidad es

array = statment.executeQuery(consulta);

es porque statement es null .... ¿dónde creas un statement para poder llamar a executeQuery() ?

Se bueno.
El Statment lo creo al principio de la tercera clase
Código:
private Statement statment;
Pero bueno no os preocupeis, ya me apañare, ovbiamente puedo tener malos habitos de programación, quizas no me han enseñado bien, o no tengo la suficiente experiencia.
  #7 (permalink)  
Antiguo 22/09/2016, 16:48
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: NullPointException al devolver una array

Cita:
Iniciado por finalgamestudio Ver Mensaje
Pero bueno no os preocupeis, ya me apañare, ovbiamente puedo tener malos habitos de programación, quizas no me han enseñado bien, o no tengo la suficiente experiencia.
O quizás no tienes los conocimientos básicos. No lo digo a malas, simplemente te sugiero que repases la programación de Java desde cero porque al parecer no sabes la diferencia entre declarar una variable e instanciarla. Busca información al respecto y entenderás el motivo del fallo. Por cierto, estoy seguro que chuidiang vió esa linea de la tercera clase, precisamente de ahí viene su pregunta.

Te recomendaría que repasases sobre los tipos de datos de java, como se usan, etc. Y luego sobre el uso de funciones, parámetros, ... Si las bases flaquean luego es imposible programar sin errores.
__________________
Aviso: No se resuelven dudas por MP!
  #8 (permalink)  
Antiguo 23/09/2016, 03:27
 
Fecha de Ingreso: julio-2014
Mensajes: 5
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: NullPointException al devolver una array

Vale ya lo he arreglado, efectivamente era lo que comentabais, se me había pasado inicializar el statment con un createStatmement.

Muchas gracias..

Etiquetas: devolver, exception
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:31.