tableColumn feltöltés külső kulcs alapján más táblából?

0 értékelés
155 megtekintés
kissrl (2 pont) kérdezte Feb 9.

A példa kedvéért a telefonkönyv programban felvettem még egy táblát (Eyecolor) néven ahol összesen két mező van egy Integer "Id" és egy String "color". A contacts táblában egy külső kulcsot hoztam létre "eyecolorid".
Új Kontakt felvitelnél ComboBox-ból választok a "color" mezőkből, és a táblába az azonosító kerül!
DE a tableColumn-ban nem a táblában tárolt "eyecolorid" mezőt szeretném látni hanem a külső kulcs segítségével a másik táblában tárolt "color" mező beszédesebb értékét!

A kód "természetesen rossz" :D

TableColumn eyecoloridCol = new TableColumn("Szem Szin Id");

        eyecoloridCol.setMinWidth(50);
        eyecoloridCol.setCellValueFactory(new PropertyValueFactory<Person, String>("eyecolorid"));
        eyecoloridCol.setCellFactory(TextFieldTableCell.forTableColumn());
        eyecoloridCol.setOnEditCommit(
                new EventHandler<TableColumn.CellEditEvent<Person, String>>() {
            @Override
            public void handle(TableColumn.CellEditEvent<Person, String> t) {
                Person actualPerson = (Person) t.getTableView().getItems().get(t.getTablePosition().getRow());
                actualPerson.setEmail(t.getNewValue());
                db.updateContact(actualPerson);
            }
        }
        );

A táblák kapcsolata a DB osztályban (részlet):

        try {
            ResultSet rs = dbmd.getTables(null, "APP", "EYECOLOR", null);
            if(!rs.next())
            {
             createStatement.execute("create table eyecolor(id INT not null primary key GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)"
                                    + ",color varchar(20))");
            }
            System.out.println("EYECOLOR tábla létrehozva.");
        } catch (SQLException ex) {
            System.out.println("Valami baj van az EYECOLOR tábla létrehozásakor.");
            System.out.println(""+ex);
        }       
        try {
            ResultSet rs = dbmd.getTables(null, "APP", "CONTACTS", null);
            if(!rs.next())
            {
             createStatement.execute("create table contacts(id INT not null primary key GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),"
                                        + "lastname varchar(20),"
                                        + "firstname varchar(20),"
                                        + "email varchar(30),"
                                        + "eyecolorid INT,"
                                        + "FOREIGN KEY (eyecolorid) REFERENCES eyecolor(id))");
            }
            System.out.println("CONTACTS tábla létrehozva.");
        } catch (SQLException ex) {
            System.out.println("Valami baj van a Kontaktok tábla létrehozásakor.");
            System.out.println(""+ex);
        }     
    }

Kérjük jelentkezz be vagy regisztrálj, hogy válaszolhass a kérdésre.

...