Как вытянуть данные из ResultSet?

Модератор: Absurd

Ответить
Chester
Сообщения: 60
Зарегистрирован: 06 дек 2004, 10:46
Откуда: Kyiv, Ukraine
Контактная информация:

06 янв 2005, 08:45

Добрый день!

Подскажите, каким образом можно сделать следующее:

class a (формируется некий резалтсет rs)

class b (форма, упр эелементы и "все дела")

class c (main)


Так вот в main получаем экземпляры классов a и b

На форме (b) есть такой элемент jComboBox

Так вот каким образом можно вытягивая данные из ResultSet сразу же запихивать их в jComboBox как элементы выпадающего списка?

Пробовал нечто вроде:

ResultSet mainResSet = a.getMainResultSet();

try{
while (mainResSet.next()) {
b.getFrame().jComboBox1.addItem(mainResSet.getString(3));
System.out.println(mainResSet.getString(3));
}
} catch (SQLException sqle)
{
System.out.print("Boroda");
}

- не прокатывает, вылазит ошибка

java.lang.NullPointerException
at javax.swing.plaf.basic.BasicComboBoxUI.paintCurrentValue(BasicComboBoxUI.java:1156)
at javax.swing.plaf.basic.BasicComboBoxUI.paint(BasicComboBoxUI.java:954)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
at javax.swing.JComponent.paintComponent(JComponent.java:541)
at javax.swing.JComponent.paint(JComponent.java:808)
at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4795)
at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4748)Boroda
at javax.swing.JComponent._paintImmediately(JComponent.java:4692)
at javax.swing.JComponent.paintImmediately(JComponent.java:4495)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

06 янв 2005, 12:19

а как комбобокс создаешь?
Еще можно сохранить весь твой резалтсет в массив объектов а потом создать новый комбобокс по данному массивую
В SAD - все в SAD.
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

07 янв 2005, 02:53

Chester, похоже ошибка не имеет отношения к resultset'у. Ты просто пытаешься добавить null в комбобокс.
По уму нужно проверку делать.
Даже самый дурацкий замысел можно воплотить мастерски
paradise
Сообщения: 2
Зарегистрирован: 14 янв 2005, 13:57
Контактная информация:

14 янв 2005, 14:04

AiK писал(а):Chester, похоже ошибка не имеет отношения к resultset'у. Ты просто пытаешься добавить null в комбобокс.
По уму нужно проверку делать.
Причем null должен в этом случае добавляться первым.

Либо действительно jComboBox1 имеет значение null.
Ghost
Сообщения: 4
Зарегистрирован: 07 фев 2005, 18:57

09 фев 2005, 16:06

По-моему там null негде взятся, т.к. он проверяет циклом по mainResSet.next(), а потом берет mainResSet.getString(3), даже если там пусто, он преобразует в пустую строку. Другое дело, если там две пустых строки, тогда будет exception, но не такой.
Я думаю, что проблема в строке b.getFrame().jComboBox1.addItem(mainResSet.getString(3));
Наверное лучше сделать метод, например public void refresh(String s); в классе b, и там проверять во-первых не пустая ли строка, а во-вторых нет ли уже такой строки в твоем jComboBox1. Да, если у тебя появляются в этом столбце (третьем) одинаковые элементы, то похоже, что у тебя плохо спроектирована БД.
Ответить