0

i'm new in Java World. I'm trying to create a simple app, populating a JTable from a local database. I have some issues with this error (shown below) and I can't realize what's going on...

Error:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ProiectDealerAuto.SwingInterface.Button4ActionPerformed(SwingInterface.java:231)
at ProiectDealerAuto.SwingInterface.access$200(SwingInterface.java:22)
at ProiectDealerAuto.SwingInterface$3.actionPerformed(SwingInterface.java:97)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6527)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6292)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

I want to populate JTable when i press a button. This is the try-catch block for my button.

Connection connection = null;
    Statement statement = null;


    try{

     Class.forName("com.mysql.jdbc.Driver");
     connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dealerauto","cosmin","kilimanjaro");
        ResultSet result = statement.executeQuery("SELECT * FROM cars");
        ResultSetMetaData rsmetadata = result.getMetaData();
        int coloumns = rsmetadata.getColumnCount();
        DefaultTableModel dtm = new DefaultTableModel();
        Vector coloumns_name = new Vector();
        Vector data_rows = new Vector();

        for (int i=1; i < coloumns; i++)
        {
            coloumns_name.addElement(rsmetadata.getColumnName(i));
        }
        dtm.setColumnIdentifiers(coloumns_name);
        while(result.next())
        {
            data_rows = new Vector();
            for(int j=1; j<coloumns; j++)
            {
                data_rows.addElement(result.getString(j));
           }
            dtm.addRow(data_rows);
        }

        tbCars.setModel(dtm);


    }
      catch(ClassNotFoundException error)
   {
     System.out.println("Error "+ error.getMessage());
   }
    catch(SQLException error){
        System.out.println("Error "+ error.getMessage());
    }

1 Answer 1

2

Take a look at the first line of the stack trace:

at ProiectDealerAuto.SwingInterface.Button4ActionPerformed(SwingInterface.java:231)

I assume line 231 is:

ResultSet result = statement.executeQuery("SELECT * FROM cars");

where statement is still null. you need to initialize it first:

statement = connection.createStatement();
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.