#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. Но все равно это не работает.