Ich habe eine Datenbanktabelle mit Flughäfen, jeder Flughafen hat einen Namen und eine ID. In JavaFX habe ich ein Formular, mit einem ComboBox
, die Combobox muss alle Flughafennamen anzeigen und wenn das Formular übermittelt wird, muss es die ID des Flughafens in die Datenbank einfügen (nicht seinen Namen).JavaFX ComboBox - Text anzeigen, aber ID bei der Auswahl zurückgeben
Aber ich bin nicht wirklich herauszufinden, was die Lösung ist.
Ich habe eine
ObservableList vliegveldenList = FXCollections.observableArrayList();
ObservableList vliegveldenIDList = FXCollections.observableArrayList();
Datenbankverbindung die ComboBox
ResultSet rs = Project_Fasten_Your_Seatbelt.conn.createStatement()
.executeQuery("SELECT vliegveldnaam, vliegveld_id FROM fys_project.vliegvelden;");
while (rs.next()) {
vliegveldenList.add(rs.getString(1));
vliegveldenIDList.add(rs.getString(2));
}
Fülle die Combobox zu füllen:
vliegveldHerkomst.setValue("Luchthaven ...");
vliegveldHerkomst.setItems(vliegveldenList);
Und dies wird in die Datenbank aufgenommen, wenn die Taste gedrückt wird:
String registratieValue = registratieNmrTxt.getText();
String vluchtValue = vluchtNrmTxt.getText();
String vliegveldValue = (String) vliegveldHerkomst.getSelectionModel().getSelectedItem();
String bestemmingValue = (String) vliegveldBestemming.getSelectionModel().getSelectedItem();
String gevondenValue = (String) vliegveldGevonden.getSelectionModel().getSelectedItem();
LocalDate dGevondenValue = datumGevondenDate.getValue();
LocalDate dVluchtValue = datumVluchtDate.getValue();
String gewichtValue = gewichtBagageTxt.getText();
String kleurenValue = (String) kleuren.getSelectionModel().getSelectedItem();
String kofferValue = (String) kofferMerken.getSelectionModel().getSelectedItem();
String opmerkingValue = opmerkingArea.getText();
//Data gevonden bagage invoeren
Project_Fasten_Your_Seatbelt.conn.createStatement().executeUpdate(
"INSERT INTO gevondenbagage "
+ "(registratienummer, datumgevonden, datumaangemeld, vliegveldherkomst, "
+ "vliegveldbestemming, vliegveldgevonden, vluchtnummer, vluchtdatum, gewicht, "
+ "kleur, merk, `speciale opmerkingen`, userid)"
+ "VALUES ('" + registratieValue + "','" + dGevondenValue + "','" + today.format(localDate) + "','"
+ vliegveldValue + "','" + bestemmingValue + "','" + gevondenValue + "','"
+ vluchtValue + "','" + dVluchtValue + "','" + gewichtValue + "','"
+ kleurenValue + "','" + kofferValue + "','" + opmerkingValue + "','"
+ Project_Fasten_Your_Seatbelt.getUserId() + "')");
Das funktioniert alles in Ordnung, aber anstelle des Namens des Flughafens möchte ich die ID für den Flughafen für vliegveldValue
setzen.
Wie mache ich das?
Das erste, was Sie tun sollten, ist eine 'Airport' Klasse mit' name' und 'id' Eigenschaften. Dann erstellen Sie eine Liste von 'Airport's (anstelle von zwei Listen) und machen Sie Ihre Combobox zu einer' ComboBox '(d. H. Die Elemente in der Combobox sind' Airport' Objekte). –