I created a table with scene builder, defined all my columns there, so i am now trying to populate the columns from my database, all i get is the first row in my database, being duplicated for all other values when displayed on the tableView .Please i need help,i cant seem to find what i'm missing.
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();
}
}
while (resultSet.next()) { routes = FXCollections.observableArrayList(); for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) { routes.add(resultSet.getString(i)); } data.add(routes); } allRouteTable.setItems(data);