当前位置: 代码迷 >> java >> 通过jList从数据库中删除对象
  详细解决方案

通过jList从数据库中删除对象

热度:78   发布时间:2023-07-25 19:07:28.0

我正在Netbeans中构建一个Java GUI应用程序,用于表示数字耕作系统(或ePOS耕作)。

我需要能够通过jList查看用户列表,以及对其进行修改和删除。 每个用户都是使用User模型类构建的对象,并代表mySQL accdb数据库上的记录。

我已经成功地用户添加到数据库,并用包含User对象的ArrayList的内容填充了jList,但是我不知道如何从数据库中删除在jList中选择的用户。

以下是从数据库中删除用户的代码:

//  removes users from the database
public void removeUser (User dbUser) {

    try (Connection conn = setupConnection()) {

        // create SQL statement
        Statement stmt = conn.createStatement();

        // SQL query in string variable
        String sql = "DELETE FROM Users " +
                    "WHERE employee_number = " +
                     dbUser.getEmployeeNumber();

       // execute query on database
        stmt.executeUpdate(sql); 

    } catch (Exception ex) {

        String message = ex.getMessage();
        System.out.println("dbUser error: " + message);

    }

}

我对此有些了解,但是能够通过jList定位特定用户并将其从数据库中删除是我无法理解的事情。

为了清楚起见,除非有要求,否则我不会发布用于添加用户和填充jList的代码。

谢谢。

我可以使用以下解决方案解决问题:

  1. 将要删除的列表中的项目索引保存到变量中。
  2. 通过定位变量,将模型元素放在相同的索引位置。
  3. 根据所选索引创建用户对象的实例,记住要强制转换User对象类型。
  4. 最后,删除数据库条目和列表条目。

这是代码:

// validate that an item is selected
    if (user_lst.isSelectionEmpty()) {

        JOptionPane.showMessageDialog(null, "You haven't selected an account to remove from the list.");

    } else {



        // target object at list index
        int index = user_lst.getSelectedIndex();

        // remove object at list index
        model.getElementAt(index);

        // create instance of user based on selected index
        User u = (User) model.getElementAt(index);


        if (index < 0) {

            System.out.println("jList error: There are no items");

        } else {

            db.removeUser(u);
            model.remove(index);

        }

        // refresh list model
        user_lst.setModel(model);

        // confirm user was removed
        JOptionPane.showMessageDialog(null, "Account removed");

    }