我试图制作一个名为Overeenkomst的TableView,它有一个ID和另外两个来自2个名为Gevonden和Vermiste的表的ID。
嘲笑是,一旦调用ID Overeenkomst,它检查其他2个ID是什么,检查来自其他表的那两个表Gevonden和Vermiste的值,并将这些值发送回javafile并最终一个FXML文件。我试图在while循环中创建一个ResultSet,并认为它将从另一个表循环正确的ID值,但它只能工作一次。在那之后它停止了。
Start.java
private void writeTableData() {
Database database = new Database(
"database",
"localhost:3306",
"root",
" "
);
try {
ResultSet resultOvereenkomst = database.executeQuery("SELECT * FROM testDatabase.Overeenkomst WHERE Gesloten = 1;");
ResultSet resultGevonden = database.executeQuery("SELECT * FROM testDatabase.Gevonden");
while (resultOvereenkomst.next() && resultGevonden.next()) {
Bagage bagage = new Bagage();
bagage.setId(resultOvereenkomst.getInt("OvereenkomstID"));
bagage.setDatum(resultOvereenkomst.getString("Datum"));
ResultSet checkGevonden = database.executeQuery("SELECT Labelnummer, BagageType FROM testDatabase.Gevonden WHERE idGevonden = " + resultOvereenkomst.getInt("GevondenID") + ";" );
bagage.setLabelNummer(checkGevonden.getInt("Labelnummer"));
bagage.setBagageType(checkGevonden.getString("BagageType"));
geslotenData.add(bagage);
}
} catch (SQLException ex) {
}
}
Bagage.java
public class Bagage extends Gebruiker{
private final SimpleIntegerProperty id = new SimpleIntegerProperty();
private final SimpleIntegerProperty gevondenID = new SimpleIntegerProperty();
private final SimpleIntegerProperty vermistID = new SimpleIntegerProperty();
private final SimpleStringProperty datum = new SimpleStringProperty();
private final SimpleIntegerProperty labelNummer = new SimpleIntegerProperty();
private final SimpleIntegerProperty vluchtNr = new SimpleIntegerProperty();
private final SimpleStringProperty bagageType = new SimpleStringProperty();
private final SimpleStringProperty tijd = new SimpleStringProperty();
private final SimpleStringProperty luchthaven = new SimpleStringProperty();
private final SimpleStringProperty bestemming = new SimpleStringProperty();
private final SimpleStringProperty merk = new SimpleStringProperty();
private final SimpleStringProperty kleur = new SimpleStringProperty();
private final SimpleStringProperty BijzondereKenmerken = new SimpleStringProperty();
//Setters
public void setId(int id){
this.id.set(id);
}
public void setDatum(String datum){
this.datum.set(datum);
}
public void setLabelNummer(int labelNummer){
this.labelNummer.set(labelNummer);
}
public void setVluchtNr(int vluchtNr){
this.vluchtNr.set(vluchtNr);
}
public void setBagageType(String bagageType){
this.bagageType.set(bagageType);
}
public void setTijd(String tijd){
this.tijd.set(tijd);
}
public void setLuchthaven(String luchthaven){
this.luchthaven.set(luchthaven);
}
public void setBestemming(String bestemming){
this.bestemming.set(bestemming);
}
public void setMerk(String merk){
this.merk.set(merk);
}
public void setKleur(String kleur){
this.kleur.set(kleur);
}
public void setBijzondereKenmerken(String bijzondereKenmerken){
this.BijzondereKenmerken.set(bijzondereKenmerken);
}
public void setGevondenID(int gevondenID){
this.gevondenID.set(gevondenID);
}
public void setVermistID(int vermistID){
this.vermistID.set(vermistID);
}
//Getters
public Integer getId(){
return id.get();
}
public String getDatum(){
return datum.get();
}
public Integer getLabelNummer(){
return labelNummer.get();
}
public Integer getVluchtNr(){
return vluchtNr.get();
}
public String getBagageType(){
return bagageType.get();
}
public String getTijd(){
return tijd.get();
}
public String getLuchthaven(){
return luchthaven.get();
}
public String getBestemming(){
return bestemming.get();
}
public String getMerk(){
return merk.get();
}
public String getKleur(){
return kleur.get();
}
public String getBijzondereKenmerken(){
return BijzondereKenmerken.get();
}
public Integer getVermistID(){
return vermistID.get();
}
public Integer getGevondenID(){
return gevondenID.get();
}
}
如果我删除这段代码:
ResultSet checkGevonden = database.executeQuery("SELECT Labelnummer, BagageType FROM testDatabase.Gevonden WHERE idGevonden = " + resultOvereenkomst.getInt("GevondenID") + ";" );
并将这两个改为:
bagage.setLabelNummer(resultGevonden.getInt("Labelnummer"));
bagage.setBagageType(resultGevonden.getString("BagageType"));
然后就行了。但问题是他们没有表现出正确的价值观。
我在Stackoverflow上看了一段时间并没有找到我正在寻找的答案,所以我希望你们能帮助我。
感谢提前帮助
答案 0 :(得分:0)
正如e4c5的评论所说,你应该使用join来链接你的表,例如:
private void writeTableData() {
Database database = new Database(
"database",
"localhost:3306",
"root",
" "
);
try {
ResultSet resultOvereenkomst = database.executeQuery("SELECT * FROM testDatabase.Overeenkomst LEFT JOIN testDatabase.Gevonden ON Gevonden.idGevonden = Overeenkomst.GevondenID WHERE Gesloten = 1;");
while (resultOvereenkomst.next()) {
Bagage bagage = new Bagage();
bagage.setId(resultOvereenkomst.getInt("OvereenkomstID"));
bagage.setDatum(resultOvereenkomst.getString("Datum"));
bagage.setLabelNummer(checkGevonden.getInt("Labelnummer"));
bagage.setBagageType(checkGevonden.getString("BagageType"));
geslotenData.add(bagage);
}
} catch (SQLException ex) {
}
}
有关联接的更多信息:http://www.sql-join.com/