Удалить объекты из базы данных через jList - PullRequest
0 голосов
/ 25 февраля 2019

Я создаю Java-приложение с графическим интерфейсом в Netbeans, предназначенное для представления цифровой кассовой системы (или ePOS till).

Мне нужно иметь возможность просматривать список пользователей через jList, а также изменять и удалять их.Каждый пользователь - это объект, созданный с помощью класса модели User и представляющий запись в базе данных mySQL accdb.

Мне удалось добавить пользователей в базу данных и заполнить jList с помощьюсодержимое ArrayList, содержащего объекты User, но я не понимаю, как удалить пользователя, выбранного в 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 Ответ

0 голосов
/ 25 февраля 2019

Мне удалось решить мою проблему с помощью этого решения:

  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");

    }
...