Исключение NullPointer при заполнении JTable

#nullpointerexception

#исключение nullpointerexception

Вопрос:

При попытке загрузить данные в JTable я получаю следующую ошибку.

Исключение в потоке «AWT-EventQueue-0» java.lang.Исключение NullPointerException в com.tfc.check.handle.dao.impl.ChequeDAOImpl.getCheques(ChequeDAOImpl.java:23) в com.tfc.check.handle.ui.ChequeGUI.(ChequeGUI.java:38) при TestChequeDAO $1.запустите(TestChequeDAO.java:30) при java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) в java.awt.EventQueue.dispatchEvent(EventQueue.java:597) в java.awt.EventDispatchThread.pumpponeeventforfilters(EventDispatchThread.java:273) в java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) в java.awt.EventDispatchThread. pumpEventsForHierarchy(EventDispatchThread.java:173) в java.awt.EventDispatchThread.События pumpEvents(EventDispatchThread.java: 168) в java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) в java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

это мой основной класс:

 public class TestChequeDAO {

public static void main(String[] args) throws SQLException{
    DBConnection connection = new DBConnection();
    connection.setUser("");
    connection.setPswd("");

    ChequeDAOImpl dao = new ChequeDAOImpl();
    dao.setConnection(connection);

    List<Cheque> cheques = dao.getCheques();

    EventQueue.invokeLater(new Runnable() {

        public void run() {
            ChequeGUI cgui;
            try {
                cgui = new ChequeGUI();

                cgui.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                cgui.pack();
                cgui.setVisible(true);

            } catch (SQLException e) {

                e.printStackTrace();
            }


        }
    });


}
 

}

это мой класс gui:

 public class ChequeGUI extends JFrame {

JTable guiTable = new JTable();
DefaultTableModel model = new DefaultTableModel(new Object[][]{},new String[]{"Name","Amount","Date"});

public ChequeGUI() throws SQLException {

    guiTable.setModel(model);
    add(new JScrollPane(guiTable));

    //Populate Table
    ChequeDAOImpl chqdi = new ChequeDAOImpl();
    List<Cheque> cheques = chqdi.getCheques();

    for(Cheque cq : cheques){
        model.addRow(new Object[]{cq.getName(),cq.getAmount(),cq.getDate()});
    }


}
 

}

вот где я написал запрос:

 public class ChequeDAOImpl implements ChequeDAO{
//DB2 connection
private DBConnection dbConnection;

public List<Cheque> getCheques() throws SQLException{
    List<Cheque> cheques = new ArrayList<Cheque>();
    Connection connection = dbConnection.getConnection();
    try{
        Statement statement = connection.createStatement();
        ResultSet result = statement.executeQuery("select * from LIB.DATA");


        while(result.next()) {
            Cheque cheque = new Cheque();      
            cheque.setAmount(result.getDouble("AMOUNT"));
            cheque.setDate(result.getDate("DATE"));
            cheque.setName(result.getString("NAME"));

            cheques.add(cheque);

            for(Cheque chq : cheques){

                System.out.println("Name: "   result.getString("NAME"));
                System.out.println("Amount: "   result.getDouble("AMOUNT"));
                System.out.println("Date: "   result.getDate("DATE"));
            }               



        } 
    }catch(Exception exception){
        exception.printStackTrace();
    }finally{
        connection.close();
    }
    return cheques;
}

public DBConnection getConnection() {
    return dbConnection;
}

public void setConnection(DBConnection connection) {
    this.dbConnection = connection;
}
 

}

Комментарии:

1. Это не имеет ничего общего с JTable. Что такое строка 23 в классе ChequeDAOImpl ?

2. это соединение с базой данных

Ответ №1:

Вам необходимо выполнить инициализацию DBConnection dbConnection , и это во многом зависит от того, как работает ваше приложение

Комментарии:

1. Спасибо за ответ. Я инициализировал dbconnection. Но все равно это не работает.