Заполните JComboBox данными от MySQL - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть таблица с именем «supplier», в которой есть два столбца «suppID» и «suppName».

Я хочу получить данные из suppName и заполнить их в JComboBox таким образом, чтобы сохранить содержимое обновлено, то есть, если новая строка вставлена ​​или удалена, JComboBox будет отображать данные в точности так, как они хранятся в таблице на момент ее открытия

        addStock.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ae) {
            int result = JOptionPane.showConfirmDialog(null,addStockPanel,"Add new stock", JOptionPane.OK_CANCEL_OPTION);
            try{
                //Connect to DB
                Connection conn = CatalogueDB.getConnection();
                //Prepare statement to pull data
                Statement pull = conn.createStatement();


            } catch(Exception e){System.out.println("Error adding supplier");}
            //Finish by printing a message to say the insert has worked.
            finally{
                System.out.println("Insert Completed.");

Единственная идея, которая приходит на ум с моим уровнем знаний - это сделать оператор выбора из таблицы, а затем сохранить его в строке, но, когда я вставляю данные, мне постоянно приходится добавлять больше строк для размещения дополнительной информации.

1 Ответ

0 голосов
/ 24 апреля 2020

Я понятия не имею, как вы создали свой комбинированный список, поскольку вы забыли опубликовать код, но вкратце, чтобы обновлять комбинированный список каждый раз, когда вы добавляете нового поставщика, вы можете использовать следующую логику c (фактическая реализация на ваше усмотрение):

В вашем операторе try (где вы фактически пытаетесь добавить нового поставщика в свою таблицу) следуйте за выполнением оператора SQL, например:

try
{
    //Connect to DB
    Connection conn = CatalogueDB.getConnection();
    //Prepare statement to push new supplier data
    Statement push = conn.createStatement();

    // adds new supplier name
    model.addElement(<name of supplier>);
    // notifies combobox that the underlying model has changed
    // box will be repainted automatically
    model.fireContentsChanged();
}
catch(Exception e)
{
    e.printStackTrace();
    // other handling as necessary
}

, где model - это модель, используемая для вашего JComboBox, и, очевидно, имя поставщика получается из любой переменной, в которой хранится имя нового поставщика, которого вы пытаетесь добавить.

Если исключение препятствует добавлению поставщика, часть, в которой вы добавляете имя поставщика в выпадающий список, не будет работать, поскольку управление немедленно передается в часть catch вашего try / catch.

Нет смысла запускать посторонние операторы select, чтобы заполнить ваш комбинированный список после успешной вставки нового поставщика, когда вы уже У меня есть все необходимые данные.

...