Java 从数据库添加菜单按钮
我试图从数据库中添加一个java菜单按钮。我在PhpMyAdmin中有一些表的名称。单击按钮后,将显示一个列表,其中包含数据库中的所有名称。这好像不管用。有人能帮我吗?我尝试过不同的方法,但似乎没有真正起作用Java 从数据库添加菜单按钮,java,javafx,jdbc,while-loop,menu,Java,Javafx,Jdbc,While Loop,Menu,我试图从数据库中添加一个java菜单按钮。我在PhpMyAdmin中有一些表的名称。单击按钮后,将显示一个列表,其中包含数据库中的所有名称。这好像不管用。有人能帮我吗?我尝试过不同的方法,但似乎没有真正起作用 try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost/bibliotheek?user=root");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/bibliotheek?user=root");
Connection con = conn;
ResultSet rs = con.createStatement().executeQuery("SELECT naam from klanten");
while (rs.next()) {
UserModel usr = new UserModel();
usr.setNaam(rs.getString("naam"));
}
dropdownKlant.getItems().addAll(new MenuItem("naam"));
} catch (SQLException sqlf) {
System.out.println(sqlf.getMessage());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
我的FXML:
@FXML
private MenuButton dropdownKlant;
我的用户模型:
public class UserModel {
private int id;
private String naam;
private String achternaam;
private String wachtwoord;
private String woonplaats;
private String straatnaam;
private String straatnummer;
public UserModel(int id, String naam, String achternaam, String wachtwoord, String woonplaats, String straatnaam, String straatnummer) {
this.id = id;
this.naam = naam;
this.achternaam = achternaam;
this.wachtwoord = wachtwoord;
this.woonplaats = woonplaats;
this.straatnaam = straatnaam;
this.straatnummer = straatnummer;
}
public void setId(int id) {
this.id = id;
}
public void setNaam(String naam) {
this.naam = naam;
}
public void setAchternaam(String achternaam) {
this.achternaam = achternaam;
}
public void setWachtwoord(String wachtwoord) {
this.wachtwoord = wachtwoord;
}
public void setWoonplaats(String woonplaats) {
this.woonplaats = woonplaats;
}
public void setStraatnaam(String straatnaam) {
this.straatnaam = straatnaam;
}
public void setStraatnummer(String straatnummer) {
this.straatnummer = straatnummer;
}
public UserModel() {
}
public int getId() {
return id;
}
public String getNaam() {
return naam;
}
public String getAchternaam() {
return achternaam;
}
public String getWachtwoord() {
return wachtwoord;
}
public String getWoonplaats() {
return woonplaats;
}
public String getStraatnaam() {
return straatnaam;
}
public String getStraatnummer() {
return straatnummer;
}
}
您不会将新创建的添加到。创建一个临时变量,以便插入新创建的
MenuItem
。您可能还需要添加一个事件处理程序来处理菜单项上的点击事件,因为在下一次迭代中,您将丢失对它的引用
while (rs.next()) {
UserModel usr = new UserModel();
String naam = rs.getString("naam");
usr.setNaam(naam);
MenuItem temp = new MenuItem(naam);
dropdownKlant.getItems().addAll(temp);
}
或者,您可能希望将这些创建的
菜单项
存储到单独的列表
中,并在以后处理它们。您在结果循环中创建了一个新用户,但从未使用过它,并且仅创建一个菜单项后,它可能无法工作:(我用一个动作事件尝试了它,结果是什么?它不工作?
?结果是什么?有错误吗?你试过在while迭代中进行调试吗?到目前为止我没有错误,我真的不知道如何进行调试,如果你使用print-in-loop检查你的数据库是否真的给了你,我可以发送完整的代码。)result@Javaprogrammern00b而且检查菜单按钮是否在显示的场景中。在按钮中单击doSystem.out.println(dropdownKlant.getItems().size()+“\n”+dropdownKlant.getScene().getWindow().isShowing());
在try/catch之后