2013-04-06 7 views
1

Почему у меня есть эта ошибка? что это значит? Я хочу только отобразить все данные в моей SQL DB.Заполнение jTable в JAVA

run: 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at javaapplication25.SearchPatient.<init>(SearchPatient.java:26) 
    at javaapplication25.SearchPatient$2.run(SearchPatient.java:146) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705) 
    at java.awt.EventQueue.access$000(EventQueue.java:101) 
    at java.awt.EventQueue$3.run(EventQueue.java:666) 
    at java.awt.EventQueue$3.run(EventQueue.java:664) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:675) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 

Вот коды, которые я использовал, не знаю, как это исправить, потому что я не достаточно хорош в программировании Java приложения. , может ли кто-нибудь помочь мне здесь? :

package javaapplication25; 

/** 
* 
* @author cleanfuel 
*/ 
import java.sql.*; 
import java.util.Vector; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.table.DefaultTableModel; 
public class SearchPatient extends javax.swing.JFrame { 

    /** 
    * Creates new form SearchPatient 
    */ 
    public SearchPatient() throws SQLException { 
     initComponents(); 

     Statement stmt = null; 

     ResultSet rs = stmt.executeQuery("SELECT * FROM dbo.Patients"); 
     ResultSetMetaData rsmetadata = rs.getMetaData(); 

     int columns = rsmetadata.getColumnCount(); 

     DefaultTableModel dtm = new DefaultTableModel(); 
     Vector columns_vector = new Vector(); 
     Vector rows_vector = new Vector(); 

     for (int i=1; i< columns; i++){ 
     columns_vector.addElement(rsmetadata.getColumnName(i)); 
     } 

     dtm.setColumnIdentifiers(columns_vector); 

     while (rs.next()){ 

      rows_vector = new Vector(); 
      for (int j=1; j<columns; j++){ 

       rows_vector.addElement(rs.getString(j)); 
      } 
      dtm.addRow(rows_vector); 
     } 
     tblPatients.setModel(dtm); 

    } 


    @SuppressWarnings("unchecked") 


Connection connection; 
    private void formWindowOpened(java.awt.event.WindowEvent evt) { 
     // TODO add your handling code here: 
     connection = Main.ConnectDatabase(); 
    } 
+0

«Не знаю, как исправить это, потому что я недостаточно хорош в программировании Java-приложений». Итак, каждый раз, когда у вас есть небольшая проблема, вы собираетесь сюда приехать и попросить нас решить его для вас? Извините, это не так, как это работает. Вам нужно научиться решать проблемы самостоятельно. Ошибка указана в строке 26, а переменная имеет значение null. Вы должны выяснить, какая переменная имеет значение null в этой строке. Все, что вам нужно сделать, это добавить System.out.println (...) для каждой переменной, используемой в строке. Один из них будет нулевым. – camickr

+0

извините, сэр, если я всегда задавал здесь вопрос ... –

+0

@CrystalMaiden Сила любого хорошего разработчика - это способность исследовать собственные проблемы. Нет ничего плохого в задании вопросов, но это не должно быть первое место, которое вы начинаете, вот и все. – MadProgrammer

ответ

2

У вас есть эти две линии, одна за другой

Statement stmt = null; 

ResultSet rs = stmt.executeQuery("SELECT * FROM dbo.Patients"); 

Вы не инициированную в stmt объект, так что null, ничего, Натта

В принципе, это похоже на попытку для включения телевизора, прежде чем вы его включите, это вряд ли будет работать.

Взгляните на JDBC Data Access для получения более подробной информации, но по существу вам необходимо установить соединение с базой данных, а затем использовать это соединение для создания объекта Statement, после чего вы можете запросить его.

+0

О! Я вижу, это потому, что я сократил соединение в окне Открытое событие ... Я буду перекодировать его с помощью MadProgrammer и рассказать вам, что произойдет –

Смежные вопросы