[JCombobox+Baza danych]

0

Witam,
mam pytanie dot. comboboxa i tabeli pobranej z bazy.
Załóżmy, że moja tabela, z której pobieram dane to T_Miasto, a w niej mam pola ID i Miasto. Do comboboxa wrzuciłem tylko dane z kolumny miasto, ale juz do zapytania, które ma być wykonywane później (np insert into T_Klient...) chciałbym wrzucić dane z pola ID przy danym mieście wyświetlanym z comboboxa i nie wiem jak to zrobić

moja metoda wyświetlająca dane w comboboxie wygląda następująco:

    int miasta(){
        int i=0;
        polaczenie();
        try {
            String query=" SELECT Miasto from T_Miasto order by Miasto";
            ResultSet rs=sta.executeQuery(query);
             while(rs.next()) {
                   comboMiasto.addItem(rs.getString(1));
                   i=i+1;
            }
            rs.close();
            conn.close();
        } catch (Exception e) {System.out.println(e); }  
            return i;
    }

Teraz chciałbym, żeby na akcję np jakiegoś buttona wykonywało się insert into.. .ale z wartoscia indeksu danego miasta pobranego z tabeli T_Miasto za pomocą tegoż comboboxa. Mam nadzieję, że nie zakręciłem za bardzo :]

0

moja propozycja to stworzenie jakiejś 'tablicy asocjacyjnej' (odsyłam do dokumentacji Java5, klasa 'Map')gdzie kluczem bylaby nazwa miasta a wartoscią ID tegoz miasta. wtedy po kliknieciu przycisku, bierzesz 'selectedItem' z comboBoxa, używasz go jako Key (nazwa miasta) do wyszukania Value w twojej Map'ie, bierzesz to wyszukane Value (czyli w tym wypadku ID miasta) i wstawiasz do zapytania SQL.

innym rozwiązaniem jest zaimplementowanie swojego ComboBoxModel, wg. mnie lepsze rozwiązanie (ogólnie Modele są b. dobre, np. wypełniania do JTable'a ), ale na pewno bardziej czasochłonne, chociaż...

pzdr.

0

ok, dzięki bardzo - teraz chociaż wiem, gdzie szukać ;]
Wkleję kod jak wszystko zrobię i będzie działało :]

0

zrobiłem :D wielkie dzięki Shimmi :]
musiałem:

  1. utworzyć mapę obiektów :
Map mapaMiast = new TreeMap();
  1. zmodyfikować metodę wyświetlającą Combo, by od razu dodawała elementy do mapy:
    int miasta(){
        int i=0;
        polaczenie();
        try {
            String query=" SELECT Miasto, ID_Miasto from T_Miasto order by Miasto";
            ResultSet rs=sta.executeQuery(query);
             while(rs.next()) {
                   comboMiasto.addItem(rs.getString(1));
                   mapaMiast.put(rs.getString(1),rs.getString(2));         
                   i=i+1;
            }
            rs.close();
            conn.close();
        } catch (Exception e) {System.out.println(e); }  
            return i;
    }
  1. utworzyć akcję przycisku wyświetlającą interesujący mnie index miasta pobrany z bazy danych:
        Object zmienna = comboMiasto.getSelectedItem();
        int id = Integer.parseInt((String) mapaMiast.get(zmienna));
        System.err.println(id);

jeszcze raz dzięki [green] [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1