来自数据库复制的Javafx TableView

来自数据库复制的Javafx TableView,javafx,Javafx,我用scene builder创建了一个表,在那里定义了我的所有列,所以我现在尝试从数据库中填充列,我得到的只是数据库中的第一行,当显示在tableView上时,所有其他值都会被复制。我需要帮助,我似乎找不到缺少的内容 public void populateTable() { final String username = "root"; final String password = "joshua"; final String bd_url = "jdbc:mys

我用scene builder创建了一个表,在那里定义了我的所有列,所以我现在尝试从数据库中填充列,我得到的只是数据库中的第一行,当显示在tableView上时,所有其他值都会被复制。我需要帮助,我似乎找不到缺少的内容

public void populateTable() {

    final String username = "root";
    final String password = "joshua";
    final String bd_url = "jdbc:mysql://localhost:3306/Bus_billing_system?zeroDateTimeBehavior=convertToNull";
    try {
        connection = DriverManager.getConnection(bd_url, username, password);
        getAllStatement = connection.createStatement();

        resultSet = getAllStatement.executeQuery("select * from RouteDB");

        //from column in table         
        fromColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(0).toString());
            }
        });

        //to column in table
        toColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(1).toString());
            }
        });
        //date of departure column in table
        dateOfDepartureColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(2).toString());
            }
        });
        //time of departure column in table
        timeOfDepartureColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(3).toString());
            }
        });
        //price column
        priceColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(4).toString());
            }
        });

        allRouteTable.getColumns().setAll(fromColumn, toColumn, dateOfDepartureColumn, timeOfDepartureColumn, priceColumn);

        while (resultSet.next()) {
            for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
                routes.add(resultSet.getString(i));
            }
            data.add(routes);
        }
        allRouteTable.setItems(data);


    } catch (SQLException e) {
        e.printStackTrace();
    }
}
public void populateTable(){
最终字符串username=“root”;
最终字符串密码=“joshua”;
最终字符串bd_url=“jdbc:mysql://localhost:3306/Bus_billing_system?zeroDateTimeBehavior=convertToNull";
试一试{
connection=DriverManager.getConnection(bd_url、用户名、密码);
getAllStatement=connection.createStatement();
resultSet=getAllStatement.executeQuery(“从RouteDB中选择*);
//从表中的列开始
fromColumn.setCellValueFactory(新回调(){
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(0.toString());
}
});
//到表中的列
toColumn.setCellValueFactory(新回调(){
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(1.toString());
}
});
//表中的“出发日期”列
DateOfDepartRecolumn.setCellValueFactory(新回调(){
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(2.toString());
}
});
//表中的“出发时间”列
TimeOfDepartRecolumn.setCellValueFactory(新回调(){
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(3.toString());
}
});
//价格栏
priceColumn.setCellValueFactory(新回调(){
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(4.toString());
}
});
allRouteTable.getColumns().setAll(从列、到列、分离日期、分离时间、价格列);
while(resultSet.next()){
对于(inti=1;i新代码

public void populateTable() {

    final String username = "root";
    final String password = "joshua";
    final String bd_url = "jdbc:mysql://localhost:3306/Bus_billing_system?zeroDateTimeBehavior=convertToNull";
    try {
        connection = DriverManager.getConnection(bd_url, username, password);
        getAllStatement = connection.createStatement();

        resultSet = getAllStatement.executeQuery("select * from RouteDB");

        //from column in table         
        fromColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(0).toString());
            }
        });

        //to column in table
        toColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(1).toString());
            }
        });
        //date of departure column in table
        dateOfDepartureColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(2).toString());
            }
        });
        //time of departure column in table
        timeOfDepartureColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(3).toString());
            }
        });
        //price column
        priceColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(4).toString());
            }
        });
        //availableSpace column
        availableSpaceColumn.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
                return new SimpleStringProperty(param.getValue().get(5).toString());
            }
        });

        allRouteTable.getColumns().setAll(fromColumn, toColumn, dateOfDepartureColumn, timeOfDepartureColumn, priceColumn, availableSpaceColumn);

        while (resultSet.next()) {


          //This is the correction made defining the routes object after while loop
            routes = FXCollections.observableArrayList();


            for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
                routes.add(resultSet.getString(i));
            }
            data.add(routes);
        }

        allRouteTable.setItems(data);


    } catch (SQLException e) {
        e.printStackTrace();
    }
    finally {
        try {
            connection.close();
            getAllStatement.close();
            resultSet.close();
        } catch (SQLException er) {
            er.printStackTrace();
        }
    }

}
public void populateTable(){
最终字符串username=“root”;
最终字符串密码=“joshua”;
最终字符串bd_url=“jdbc:mysql://localhost:3306/Bus_billing_system?zeroDateTimeBehavior=convertToNull";
试一试{
connection=DriverManager.getConnection(bd_url、用户名、密码);
getAllStatement=connection.createStatement();
resultSet=getAllStatement.executeQuery(“从RouteDB中选择*);
//从表中的列开始
fromColumn.setCellValueFactory(新回调(){
@凌驾
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(0.toString());
}
});
//到表中的列
toColumn.setCellValueFactory(新回调(){
@凌驾
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(1.toString());
}
});
//表中的“出发日期”列
DateOfDepartRecolumn.setCellValueFactory(新回调(){
@凌驾
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(2.toString());
}
});
//表中的“出发时间”列
TimeOfDepartRecolumn.setCellValueFactory(新回调(){
@凌驾
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(3.toString());
}
});
//价格栏
priceColumn.setCellValueFactory(新回调(){
@凌驾
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(4.toString());
}
});
//可用空间列
availableSpaceColumn.setCellValueFactory(新回调(){
@凌驾
公共observeValue调用(CellDataFeatures参数){
返回新的SimpleStringProperty(param.getValue().get(5.toString());
}
});
allRouteTable.getColumns().setAll(从列、到列、分离日期、分离时间、价格列、可用空间列);
while(resultSet.next()){
//这是在while循环之后定义routes对象所做的更正
routes=FXCollections.observableArrayList();

对于(inti=1;i试试这个。也许这会有帮助

 @FXML private void SearchButton() 
         {      
            Connection c ;
            datamem = FXCollections.observableArrayList();
           try
            {
              c = Dao.getCon();
              String SQL =SELECT * FROM `Member`;

              ResultSet rs = c.createStatement().executeQuery(SQL);
              if(table.getColumns().isEmpty())
              {
                for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++)
                {
                    final int j = i;               
                    TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i+1));
                    col.setCellValueFactory(new             Callback<TableColumn.CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){                   
                    public ObservableValue<String>    call(TableColumn.CellDataFeatures<ObservableList, String> param) {                                                                                             
                    return new SimpleStringProperty(param.getValue().get(j).toString());                       
                        }                   
                    });

                    table.getColumns().addAll(col);
                }//for
              }//if
             while(rs.next())
              {
                  ObservableList<String> row = FXCollections.observableArrayList();
                  for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++)
                    {
                        row.add(rs.getString(i));
                    }// for
                   datamem.add(row);
              }//while
              table.setItems(datamem);
            }//try
            catch(Exception e)
            {
                JOptionPane.showMessageDialog(null, "Problem in Search Button "+e);
            }
        }//else
    }//else

} //search method
@FXML private void SearchButton()
{      
连接c;
datamem=FXCollections.observableArrayList();
尝试
{
c=Dao.getCon();
字符串SQL=从'Member'中选择*;
ResultSet rs=c.createStatement().executeQuery(SQL);
if(table.getColumns().isEmpty())
{

for(int i=0;i尝试在循环中创建一个新对象,将数据添加到TableView中。不仅仅是更改以前声明的对象的值。哇,非常感谢,我所要做的就是在for循环之前添加routes=FXCollections.ObsevableArrayList()。THNAK you soo more@Marc
while(resultSet.next()){routes=FXCollections.observearraylist();for(int i=1;我可能会用工作代码回答您自己的问题,以便其他人可以使用它。您在哪里声明
数据