JTable无法从数据库加载数据

霍瓦

尽管能够动态加载列名,但我似乎无法将数据加载到表中。当我尝试加载数据时,尽管Java Icon仍显示在任务栏上,却什么也没出现。看起来GUI本身没有任何问题,所以我想知道从构造函数打开连接是否会导致逻辑错误。变量,但确实如此,所以我不知道到底是什么导致了此错误。

这是GUI的代码:

public class WeatherFrame extends JFrame {

    private JPanel contentPane;
    private JTable table;
    HealthData health = new HealthData();
    private DefaultTableModel model;
    String[] columnNames = {"zipcode", "county", "city", "state", "year", "month","ageGroup",
                            "numOfVisits", "MonthlyMax", "MonthlyMin", "MonthlyNor"};

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    WeatherFrame frame = new WeatherFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public WeatherFrame() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 800, 300);
        contentPane = new JPanel();
        contentPane.setBounds(100, 100,750, 200);
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(6, 25, 788, 180);
        contentPane.add(scrollPane);

        model = new DefaultTableModel();
        populateTable();
        table = new JTable(model);

        scrollPane.setViewportView(table);

        JButton btnInsert = new JButton("insert");
        btnInsert.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        btnInsert.setBounds(315, 217, 117, 29);
        contentPane.add(btnInsert);

        JButton btnDelete = new JButton("delete");
        btnDelete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        btnDelete.setBounds(198, 243, 117, 29);
        contentPane.add(btnDelete);

        JButton btnSearch = new JButton("search");
        btnSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        btnSearch.setBounds(81, 243, 117, 29);
        contentPane.add(btnSearch);

        JLabel lblWeatherTable = new JLabel("Weather Table");
        lblWeatherTable.setBounds(149, 6, 107, 16);
        contentPane.add(lblWeatherTable);

        JButton btnNext = new JButton("update");
        btnNext.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        btnNext.setBounds(198, 217, 117, 29);
        contentPane.add(btnNext);

        JButton btnRefresh = new JButton("refresh");
        btnRefresh.setBounds(81, 217, 117, 29);
        contentPane.add(btnRefresh);
    }

    public void populateTable() {

        for(String name: columnNames)
            model.addColumn(name);

        ArrayList<Health> healthdata = new ArrayList<Health>();
        healthdata = health.showAllData();                                  
        model.addRow(healthdata.toArray()); 
    }
}

这是HealthData类的构造函数

public HealthData(){
        try {
            /* Connect to database */
            connection = DriverManager.getConnection(jdbcURL, MySQLConfig.user, MySQLConfig.password);
            statement = connection.createStatement();
           data = new ArrayList<Health>();
        } catch (Exception e) 
        {
            e.printStackTrace();
        }

    }

这是showAlldata方法的代码

public ArrayList<Health> showAllData(){
        ArrayList<Health> list = new ArrayList<Health>();
        try {
            connection = DriverManager.getConnection(jdbcURL, MySQLConfig.user, MySQLConfig.password);
            Statement stmt = connection.createStatement();
            ResultSet result = stmt.executeQuery(SELECT_ALL_QUERY);


            /* Get and print out data from health table : zipcode, county, city, state, year, month, ageGroup, numberOfVisits, MMax, MMin, MNor */
            while(result.next()){
                Health data = new Health();
                int zipcode = result.getInt(1);
                data.setZipCode(zipcode);
                String county = result.getString(2);
                data.setCounty(county);
                String city = result.getString(3);
                data.setCity(city);
                String state = result.getString(4);
                data.setState(state);
                int year = result.getInt(5);
                data.setYear(year);
                int month = result.getInt(6);
                data.setMonth(month);
                String ageGroup = result.getString(7);
                data.setAgeGroup(ageGroup);
                int numOfVisits = result.getInt(8);
                data.setNumOfVisits(numOfVisits);
                float MMax = result.getFloat(9);
                data.setMMax(MMax);
                float MMin = result.getFloat(10);
                data.setMMin(MMin);
                float MNor = result.getFloat(11);
                data.setMNor(MNor);
                list.add(data);     
                connection.close()
                stmt.close();   
            }   

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list;
    }

有人可以提出解决此问题的解决方案。预先感谢您的帮助。我已经发布了一个与此有关的问题,但是这个问题与所需的代码是最新的。

我编辑代码以仅对showAlldata进行一次调用,并且还关闭了连接和语句,但是,相同的错误仍然存​​在

霍瓦
public void populateTable() {

        model = new DefaultTableModel(){

            @Override
            public boolean isCellEditable(int row, int column) {
               //all cells false
               return false;
            }
        };

        for(String name: columnNames)
            model.addColumn(name);
        ArrayList<Health> temp = new ArrayList<Health>();
        temp = health.showAllData();
        for(int i = 0; i< temp.size(); i++) {
            Object[] data = {temp.get(i).getZipCode(), temp.get(i).getCounty(), temp.get(i).getCounty(), temp.get(i).getState(),temp.get(i).getYear(),
                             temp.get(i).getMonth(), temp.get(i).getAgeGroup(), temp.get(i).getNumOfVisits(), temp.get(i).getMMax(), temp.get(i).getMMin(), temp.get(i).getMNor()};
            model.addRow(data);
        }
    }

非常感谢您的帮助,我通过如上所述修改populateTable方法解决了这个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在JTable中显示行(数据库中的值)

来自分类Dev

如何修复Web连接无法从数据库加载数据

来自分类Dev

加载数据时无法使用数据库

来自分类Dev

无法找到将数据库数据加载到的变量

来自分类Dev

从数据库加载消息

来自分类Dev

从数据库加载消息

来自分类Dev

从数据库加载评论

来自分类Dev

从数据库加载消息

来自分类Dev

从github加载数据库

来自分类Dev

来自数据库的primefaces graphicimage无法加载

来自分类Dev

无法获取要从数据库重新加载的列表项

来自分类Dev

无法从Symfony 4.3.3中的数据库加载翻译

来自分类Dev

无法从android中的sqlite数据库加载图像

来自分类Dev

来自数据库的primefaces graphicimage无法加载

来自分类Dev

ADO流无法保存从数据库加载的BLOB

来自分类Dev

无法在mysql数据库中加载'\'字符

来自分类Dev

Spring Boot无法从本地MySQL数据库加载实体

来自分类Dev

Django - 无法加载保存到数据库的图像

来自分类Dev

无法从数据库中选择 PHP 加载的元素值

来自分类Dev

Opencart 无法加载数据库驱动程序 mmysqli

来自分类Dev

首次运行时无法加载 sqlite 数据库

来自分类Dev

JTable从MySQL数据库获取值

来自分类Dev

java - jTable 数据库重复值

来自分类Dev

PHP Dropdown从数据库加载数据

来自分类Dev

如何从(SQLite)数据库加载的JTable中插入,更新和删除项目

来自分类Dev

无法选择数据库

来自分类Dev

无法插入数据库

来自分类Dev

无法还原数据库

来自分类Dev

无法更新数据库