哪个是从数据库和显示中读取值的最佳方法?

时间:2014-04-10 04:50:00

标签: mysql database javafx javafx-2

我试图从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;
}

1 个答案:

答案 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
}