添加或删除项目后如何更新我的jtable

时间:2017-09-11 00:49:40

标签: java mysql swing oop

我正在开发一个数据库项目。我的jtextfield,addbutton,editbutton和jtable最初是在一个jframe上。但是当我制作一个addbutton来打开另一个jframe并将项目添加到那里时,它可以工作,但它不会更新我的jtable,我的jtable仅在我做了另一个动作之后更新,如编辑或添加另一个项目,应该是什么问题这里?这是我的编辑按钮的示例。顺便说一下,我需要将它插入并更新到我的mysql

    if(editID.getText() != null)
    {
        String UpdateQuery = null;
        PreparedStatement ps = null;

        Connection con = main.getConnection();

        try{


            UpdateQuery = "UPDATE mydatabase SET name = ?, price = ?"
            + ", quantity = ? WHERE id = ?";

            ps = con.prepareStatement(UpdateQuery);

            ps.setString(1, editName.getText());
            ps.setString(2, editPrice.getText());
            ps.setString(3, editQuantity.getText());
            ps.setString(4, editID.getText());
            ps.executeUpdate();
            main.getProductList();
            main.Show_Products_In_JTable();
            JOptionPane.showMessageDialog(null, "Product Updated");

        }catch(Exception ex)
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }

    }else{
        JOptionPane.showMessageDialog(null, "One Or More Fields Are Empty Or Wrong");
    }    

所以这是我用来编辑表的两个方法......但它似乎不完整,就像我需要一个主要方法来同时刷新我的jtable。我的大脑现在正在爆发这个问题。因为我无法看到任何问题为什么从另一个jframe移动我的编辑方法可能会影响我的程序。

public ArrayList<Database1> getProductList()
{
        ArrayList<Database1> productList  = new ArrayList<Database1>();
        Connection con = getConnection();
        String query = "SELECT * FROM mydatabase";

        Statement st;
        ResultSet rs;

    try {

        st = con.createStatement();
        rs = st.executeQuery(query);
        Database1 mydatabase;

        while(rs.next())
        {
            mydatabase = new Database1(rs.getString("id"),rs.getString("name"),rs.getInt("price"),rs.getInt("quantity"));
            productList.add(mydatabase);
        }

    } catch (SQLException ex) {
        Logger.getLogger(mainWindow.class.getName()).log(Level.SEVERE, null, ex);
    }

    return productList; 

}


public void Show_Products_In_JTable()
{
    ArrayList<Database1> list = getProductList();
    DefaultTableModel model = (DefaultTableModel)itemTable.getModel();
    model.setRowCount(0);
    Object[] row = new Object[4];
    for(int i = 0; i < list.size(); i++)
    {
        row[0] = list.get(i).getId();
        row[1] = list.get(i).getName();
        row[2] = list.get(i).getQuantity();
        row[3] = list.get(i).getPrice();

        model.addRow(row);

    }
    itemTable.setModel(model);
    model.fireTableDataChanged();
}   

0 个答案:

没有答案