2014-05-20 84 views
0

我是Java World中的新成员。我试图创建一个简单的应用程序,从本地数据库填充一个JTable。我有这个错误(如下图所示)的一些问题,我无法知道这是怎么回事...“AWT-EventQueue-0”java.lang.NullPointerException - 需要一些建议

错误:

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) 

我要填充的JTable当我按下一个按钮。这是我的按钮的try-catch块。

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()); 
    } 

回答

2

堆栈跟踪的第一行看看:

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

我假设线231:

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

其中statement仍然null。你需要先初始化它:

statement = connection.createStatement(); 
+0

哦,天啊。我忘了,thx很多! – user3655773