Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как лучше организовать работу с БД 
:(
    Опции темы
olexande
Дата 24.9.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 25.11.2004
Где: Киев

Репутация: нет
Всего: нет



Продолжаю разбираться ... 
Сейчас уже наваял по примерам что-то похожее на цель ... 

Предм. область: учёт картриджей к принтерам, у кого он, сколько времени, заправлен-ли?

Вопрос 1:
Есть таблица в БД. Поля - ID (уникальный ключ), поле названия чего-то там (на рисунке производитель), JComboBox заполняется из БД (запрос вытягивает из БД 1 столбец с названиями ). Как можно или правильнее организовать связь между выбранным производителем картриджей и его ID для дальнейшего использования? Думаю потом не корректно будет опять искать в БД ID уже торговой марки, интересующей  пользователя, которую я получу от JComboBox ...

ориентировочный интерфейс прилепил ... 

Присоединённый файл ( Кол-во скачиваний: 51 )
Присоединённый файл  1.JPG 11,90 Kb
PM MAIL ICQ   Вверх
Kudzu
Дата 24.9.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Magnificus Picus
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 30.4.2008
Где: KLD

Репутация: нет
Всего: 1



Что, простите?
PM MAIL WWW ICQ Skype Jabber   Вверх
mbasil
Дата 24.9.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 2
Всего: 13



Простите надо идти не от картинок пользовательского интерфейса, а от структуры базы или классов доменной модели приложения. Вопрос вы задали невразумительно.
PM MAIL   Вверх
olexande
Дата 24.9.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 25.11.2004
Где: Киев

Репутация: нет
Всего: нет



Все таблицы в 1 БД на 1 сервере ... 
1 таблица : ID_vendor (уникальный ключ в таблице), vendor (текстовое поле, торговая марка)
2 таблица : ID_kartridg (уникальный ключ в таблице), ID_vendor , kartridg_type (текстовое поле, тип картриджа)

Хочу что-бы пользователь выбрал vendor, что-бы потом ID_vendor подставить в таблицу 2 в соотв. поле. (что-бы небыло в БД записей типа Hewlet pakard, Hewled Paсkart, HP ... smile )

JComboBox заполняю запросом из БД:
Код

"SELECT vendor FROM `kartriges`.`types`;"


Как получить ID_vendor, соответствующий выборанному пользователем ТМ без доп поиска по имени vendor. Само значение vendor я могу получить от JComboBox ...

Так корректнее вопрос?
PM MAIL ICQ   Вверх
mbasil
Дата 24.9.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 2
Всего: 13



Извлекайте данные прямо в модель для JComboBox в виде объекта, который в методе toString() возвращает только имя  vendor'а, а его ID не показывает в списке, но хранит.   Запрос же делайте так

"SELECT ID_vendor, vendor FROM `kartriges`.`types`;"

и извлекайте данные в объекты класса, например Vendor
Подозреваю, что сейчас вы в JComboBox в качестве значения просовываете объект типа String. Не забывайте, что у JComboBox имеется модель и именно она содержит список. Этот список не обязательно должен иметь элементы типа String.

Это сообщение отредактировал(а) mbasil - 24.9.2008, 17:02
PM MAIL   Вверх
olexande
Дата 26.9.2008, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 25.11.2004
Где: Киев

Репутация: нет
Всего: нет



ДА, заполняю так:
Код

JComboBox comboBox = new JComboBox();
        
        
                   Statement statement = null;
                   ResultSet resultset;
                   Connection conn;
                   try
                   {
                           Class.forName("com.mysql.jdbc.Driver").newInstance();
                   }
                   catch (Exception ex)
                   {
                           System.out.println("error!");
                   }
                   try
                   {          
                     conn = DriverManager.getConnection("jdbc:mysql://My_Server_IP:3306/kartriges?user=My_Login&password=My_Pass&characterEncoding=UTF8");
                     statement = conn.createStatement();
                     resultset = statement.executeQuery("SELECT vendor FROM `kartriges`.`types`;");
                     while (resultset.next())
                     {
                         comboBox.addItem(resultset.getString(1));                         
                     }
                     add(comboBox);
                   }
                   catch (SQLException ex)
                   {                     
                     System.out.println("SQLException: " + ex.getMessage()); 
                     System.out.println("SQLState: "     + ex.getSQLState()); 
                     System.out.println("VendorError: "  + ex.getErrorCode());                      
                   }


А можно чуть подробнее про эти объекты и как из них тогда вытягивать ID?

Это сообщение отредактировал(а) olexande - 26.9.2008, 11:17
PM MAIL ICQ   Вверх
mbasil
Дата 26.9.2008, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 2
Всего: 13



1. Создать класс Vendor
2. Реализовать у класса Vendor метод public String toString() так,
   чтобы он возвращал только имя вендора

Код

DefaultComboBoxModel vendorComboModel = new DefaultComboBoxModel();
. . .
      while (resultset.next()) {
         Vendor v = new Vendor( resultset.getInt(1), resultset.getString(2) ) 
         vendorComboModel.addElement( v );                         
       }
JComboBox  comboBox = new JComboBox( vendorComboModel );
. . .

Vendor v2 = (Vendor)comboBox.getSelectedItem(); 
int ID = v2.getID();


Это сообщение отредактировал(а) mbasil - 26.9.2008, 17:30
PM MAIL   Вверх
olexander
Дата 5.10.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 9.5.2008

Репутация: нет
Всего: нет



Пока продолжу спрашивать дальше ... 
Вопрос 2: Как (с помощью чего) удобно (проще ... ) создать форму документа (некоего абстрактного отчёта) состоящего из данных БД, шапки, надписей с возможностью их печати в виде как на экране? Например как отчёты в MS Access. Пользователю самому создавать не обязательно ... 

Вопрос 3:
Программу слепил на базе примера "InternalFrameDemo" из книги Java 2  Хорстмана.  выполняю запрос ... 
В каждом "меню интерфейса" делаю некий простой запрос к БД. Ввод данных, изменение, вывод таблицы ... В каждом "блочке" заново создаю соединение с БД и выполняю запрос ... В паскале я-бы "взял-бы" главную процедуру в "запрос соединения" и от туда же-бы вызывал всё. Методом тыка просто "впихнуть" не удалось ... ИДЕ говорит то сделай его статик, то не видит чего-то ... Как это организовать корректно?

Это сообщение отредактировал(а) olexander - 5.10.2008, 12:20
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0883 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.