我试图从MySQL数据库中的表中读取一些值。该表只有一列和4行。我的代码如下。我知道如何阅读所有的价值观。但是当您查看代码时,您可以理解只能显示数据库中的一个值,即表的最后一个值(最后一行中的值)。
我需要的是显示表格中的所有值。我不是一个经验丰富的程序员。那么告诉我如何阅读和显示表格中的所有值。还有一个条件 - 我需要为表中的每个值使用不同的按钮名称,以便我可以为每个按钮添加setOnAction()函数。
如果有比使用按钮更好的想法,请告诉我。但它不应该是复杂的。
private VBox userSelection() throws ClassNotFoundException, SQLException {
VBox vb1 = new VBox();
vb1.setPadding(new Insets(40, 150, 20, 150));
vb1.setSpacing(20);
Button b = null;
Text scenetitle2 = new Text("Choose Your Account");
scenetitle2.setFont(Font.font("Tahoma", FontWeight.BOLD, 20));
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager
.getConnection("jdbc:mysql://localhost:3306/project?"
+ "user=root&password=virus");
statement = connect.createStatement();
rs = statement.executeQuery("select * from user");
while (rs.next()) {
String username = rs.getString("staffname");
b = new Button(username);
b.setFont(Font.font("Calibri", FontWeight.BOLD, 17));
b.setStyle(" -fx-base: #333333;");
b.setTextFill(Color.WHITE);
b.setPrefSize(150,30);
}
vb1.getChildren().addAll(scenetitle2,b);
return vb1;
}
答案 0 :(得分:1)
我不确定我是否遵循了问题但......
我在你的While循环中看到,你覆盖你的Button b对象而不将它添加到你的VBox中。因此,只会添加最后一个Button对象。基本上你必须做这样的事情:
vb1.getChildren().add(scenetitle2);
while (rs.next()) {
String username = rs.getString("staffname");
b = new Button(username);
b.setFont(Font.font("Calibri", FontWeight.BOLD, 17));
b.setStyle(" -fx-base: #333333;");
b.setTextFill(Color.WHITE);
b.setPrefSize(150,30);
b.setOnAction(...) //add handler to button
vb1.getChildren().add(b); //add button object to your vbox inside the loop
}