Не удается заполнить Jcombobox из базы данных в Java

Я пытаюсь получить информацию из базы данных, чтобы заполнить Jcombobox, я пытаюсь использовать следующие коды, но они не работают, во всех из них поле со списком не очищается, когда.

Первая попытка

try {
                    con = Connectionz.getConnection();//Connection Object 
                    pst = con.prepareStatement("SELECT * AS achooserfill FROM Login_Users WHERE [C Team Lead] =?");
                    pst.setString(1, va);
                    rs = pst.executeQuery();

                    while (rs.next()) {
                        achooser.removeAll();
                        achooser.addItem("Please select agent");
                        achooser.addItem(rs.getString("achooserfill"));

           }
     }catch(Exception e){
         System.err.println(e);
     }

Вторая попытка

 try {
                con = Connectionz.getConnection();//Connection Object 
                pst = con.prepareStatement("SELECT * FROM Login_Users WHERE [C Team Lead] =?");
                pst.setString(1, va);
                rs = pst.executeQuery();

                while (rs.next()) {
                    achooser.removeAll();
                    achooser.addItem("Please select agent");
                    achooser.addItem(rs.getString("[VA #]"));

       }
 }catch(Exception e){
     System.err.println(e);
 }

Третья попытка

 try {
                con = Connectionz.getConnection();//Connection Object 
                pst = con.prepareStatement("SELECT [VA #] FROM Login_Users WHERE [C Team Lead] =?");
                pst.setString(1, va);
                rs = pst.executeQuery();

                while (rs.next()) {
                    achooser.removeAll();
                    achooser.addItem("Please select agent");
                    achooser.addItem(rs.getString("[VA #]"));

       }
 }catch(Exception e){
     System.err.println(e);
 }

Во всех случаях результат один и тот же,

Не удается заполнить Jcombobox из базы данных в Java

Я был бы очень признателен за любую информацию или любой ресурс, чтобы исправить ситуацию

Вероятно, проблема не в получении набора результатов. Вы можете поделиться кодом, в котором вы объявляете и настраиваете achooser?

Bill Horvath 05.10.2018 04:26

Что такое va? Вы пробовали выполнять свои SQL-запросы? Что возвращает SELECT * FROM Login_Users WHERE [C Team Lead] = ?, когда вы заменяете ? на va и запускаете его?

user2004685 05.10.2018 04:27

Также (просто любопытно), почему вы добавляете Please select agent в свой ComboBox для каждого результата?

user2004685 05.10.2018 04:29

@BillHorvath Я только что создал [chooser] Я просто создаю объект с помощью netbeans, нужно ли мне создавать объект с кодом и определять конкретную функцию, чтобы это разрешить? (Извини, новичок)

Alex Galvis 05.10.2018 04:30

@ user2004685 спасибо за быстрый ответ, va - это переменная, которая определяется, как только пользователь входит в систему, это уникальный номер для идентификации пользователя. а если подставить? это не работает, и вы правы, мне нужно временно убрать эти два запроса, спасибо !!!

Alex Galvis 05.10.2018 04:34

И все ваши циклы начинаются с renoveAll. В чем смысл использования цикла, когда вы WIPE всего существующего контента на каждой итерации?

GhostCat 05.10.2018 04:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
39
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

in all of them the combo box is not being cleaned.

achooser.removeAll();

Метод removeAll() является методом Container, а не комбинированным списком.

Ты хочешь:

achooser.removeAllItems();

чтобы удалить элементы из поля со списком.

И этот оператор должен быть вне цикла.

Кроме того, для чего-то подобного вы даже проверяли, что ваш ResultSet содержит данные. Сначала вы должны просто жестко закодировать данные, чтобы доказать, что метод addItem() работает. Затем, когда вы узнаете, что логика работает, вы делаете код более динамичным, получая данные из базы данных.

спасибо, теперь поле со списком очищено, но это единственный элемент, доступный в поле со списком, теперь дело в том, чтобы заполнить поле новой информацией.

Alex Galvis 05.10.2018 04:42

@AlexGalvis, я уже рассказывал, как решить эту проблему. Сначала просто добавьте жестко закодированные данные, чтобы доказать, что ваш код выполняется. Затем, как только это сработает, вы получите данные из базы данных. Поэтому вам нужно добавить код отладки, чтобы убедиться, что ваш цикл даже выполняется, и вы получаете действительные данные. Не думайте, что ResultSet содержит данные. Докажите это с помощью отладочного кода. Если в вашем ResultSet есть данные, тогда будет работать метод addItem (...).

camickr 05.10.2018 04:45

спасибо за все, что я просто использовал набор результатов в таблице, чтобы увидеть, что я получаю, и он пуст. Я изменю запрос и протестирую. ТЫ УДИВИТЕЛЬНЫЙ!

Alex Galvis 05.10.2018 04:54

@AlexGalvis, I just used the resultset to table to see what I was getting and is empty - все, что вам нужно было сделать, это добавить оператор System.out.println(...) внутри цикла, чтобы увидеть, какие значения находятся в ResultSet. Сделайте отладку простой. System.out.priintln (...) - это ваша попытка определить, соответствует ли ваш логический поток тому, чего вы ожидаете.

camickr 05.10.2018 04:56

Мне нравится комментарий @ camickr, поэтому я пересматриваю свой ответ. Попробуйте заполнить модель из набора результатов, а затем объявить JComboBox:

MutableComboBoxModel model = new DefaultComboBoxModel();
while (rs.next()){ 
    model.addItem(rs.getString("achooserfill"));
}
JComboBox achooser = new JComboBox(model);

Да, но по умолчанию используется модель DefaultComboBoxModel.

camickr 05.10.2018 04:41

Обратите внимание, что я давно не работал со Swing. Возможно, вы обнаружите, что лучше объявить модель, добавить отдельные позиции в модель, а затем создать средство выбора после того, как модель будет заполнена.

Bill Horvath 05.10.2018 04:42

@BillHorvath благодарит за ваш ответ и информацию, я создал модель, но не работает, поэтому, если я правильно понимаю, что я должен попытаться сделать, это создать модель DefaultCombobox, добавить элементы в модель и после этого назначить модель для выборщик? еще раз спасибо

Alex Galvis 05.10.2018 04:46

@AlexGalvis, в этом нет необходимости. Как я уже объяснил, по умолчанию используется модель DefaultComboBoxModel. Не сбивайтесь с пути. Если метод removeAllItems () работает, это доказывает, что вы можете динамически изменять данные.

camickr 05.10.2018 04:48
Try populating the model from the resultset, - откуда вы вообще знаете, что в ResultSet есть данные? Такой вопрос даже не следует задавать. Сначала это следует протестировать с использованием статических жестко закодированных данных, чтобы доказать, что логика добавления элементов в поле со списком вызывается.
camickr 05.10.2018 04:53

Я в принципе согласен, но задавался не этот вопрос, и в любом случае, если в результирующем наборе ничего нет, модель (и, следовательно, поле со списком) будет пустым.

Bill Horvath 05.10.2018 04:57
but that wasn't the question that was asked - да, но иногда вам нужно читать между строк, чтобы понять контекст всего вопроса. Всякий раз, когда я вижу вопрос относительно ResultSet, первое, что я прошу OP, - это избавиться от ResultSet и жестко закодировать данные, а не делать предположения, которые ставят OP в погоню за диким гусем. Тогда у нас будет больше информации для решения проблемы.
camickr 05.10.2018 05:06

Кроме того, вам не следует предлагать создать новый JComboBox. Вам следует просто обновить существующее поле со списком с помощью метода setModel(...), если вы используете этот подход. Таким образом, вам не нужно беспокоиться о добавлении вновь созданного поля со списком во фрейм и повторной проверке фрейма.

camickr 05.10.2018 05:07

Ага; Я куплю это - setModel был бы намного лучше. Хороший улов.

Bill Horvath 05.10.2018 05:20

Другие вопросы по теме