如何从绑定的jtable中删除行?

nx7onnlm  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(306)

我有一个 JTable 绑定到mysql。我已经做了代码插入数据。
但我不知道如何删除。
我有这个示例delete方法,可以在其他简单的项目中使用。

public String deleteItem(String name) {

    String answer = "";
    try {
        Connection con = Connect.getConnection();
        String sql = "Delete FROM item where name = ?";
        PreparedStatement ps = con.prepareStatement(sql);
        ps.setString(1, name);

        ps.executeUpdate();

        ps.close();
        con.close();

        answer = "OK";
    } catch (Exception e) {
        answer = e.toString();
    }

    return answer;
}

即使在处理未绑定的表时,我也从jtable中删除了这个对我来说很好的行。
但现在它是一个绑定到mysql的表,我找不到删除行的方法。。。已经在网上搜索过了。什么也没找到。
ps:我在用netbeans。我右键单击jtable>bind>elements,以绑定表。

ct2axkht

ct2axkht1#

哦,我找到办法了!
首先,我将deleteitem方法更改为delete by id

项目DAO.java

public String deleteItem(int ID_item) {

    String answer = "";
    try {
        Connection con = Connect.getConnection();
        String sql = "Delete FROM item where ID_Item = ?";
        PreparedStatement ps = con.prepareStatement(sql);
        ps.setInt(1, ID_item);

        ps.executeUpdate();

        ps.close();
        con.close();

        answer = "OK";
    } catch (Exception e) {
        answer = e.toString();
    }

    return answer;
}

然后delete按钮中的操作如下所示。

表单.java

private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {                                           
     int column = 0;    // get the first column which is ID_Item
     int row = tableItem.getSelectedRow();  //get row selected by user
     int value = (int) tableItem.getModel().getValueAt(row, column); // store ID_Item value
     String answer = new ItemDAO().deleteItem(value);  // call up deleteItem method

     if(answer.equals("OK")) {
         System.out.println("OK"); // just for test
         itemList.clear();    // this is needed to update the bound table after Insert/Delete/Update etc
         itemList.addAll(itemQuery.getResultList()); // same as above comment
     }else{
         System.out.println("ERROR"); // just for test.
     }

也许这不是最漂亮的方法,但它是有效的。

相关问题