tutorial llenar libro how data java database javafx tableview populate

libro - Rellenar una vista de tabla utilizando la base de datos en JavaFX



tableview javafx add data (1)

Estoy seguro de que esto te ayudará:

public class DBClass{ public Connection getConnection() throws ClassNotFoundException, SQLException{ Class.forName("com.mysql.jdbc.Driver"); return DriverManager.getConnection("jdbc:mysql://192.168.0.1:3306/dbname","mysqluser","mysqluserpwd"); } }

En la clase de controlador haga lo siguiente:

@FXML void initialize(){ assert tableview != null : "fx:id=/"tableview/" was not injected: check your FXML file ''UserMaster.fxml''."; colUserName.setCellValueFactory( new PropertyValueFactory<Usermaster,String>("userName")); colPassword.setCellValueFactory( new PropertyValueFactory<Usermaster,String>("userPassword")); colUserType.setCellValueFactory( new PropertyValueFactory<Usermaster,String>("userType")); colPhoto.setCellValueFactory( new PropertyValueFactory<Object,ImageView>("userPhoto")); objDbClass = new DBClass(); try{ con = objDbClass.getConnection(); buildData(); } catch(ClassNotFoundException ce){ logger.info(ce.toString()); } catch(SQLException ce){ logger.info(ce.toString()); } } private ObservableList<Usermaster> data; public void buildData(){ data = FXCollections.observableArrayList(); try{ String SQL = "Select * from usermaster Order By UserName"; ResultSet rs = con.createStatement().executeQuery(SQL); while(rs.next()){ Usermaster cm = new Usermaster(); cm.userId.set(rs.getInt("UserId")); Image img = new Image("tailoring/UserPhoto/User"+cm.getUserId().toString()+".jpg"); ImageView mv = new ImageView(); mv.setImage(img); mv.setFitWidth(70); mv.setFitHeight(80); cm.userPhoto.set(mv); cm.userName.set(rs.getString("UserName")); cm.userPassword.set(rs.getString("UserPassword")); cm.userType.set(rs.getString("UserType")); data.add(cm); } tableview.setItems(data); } catch(Exception e){ e.printStackTrace(); System.out.println("Error on Building Data"); } }

y cree un POJo un archivo java separado para cada entidad (tabla) que desee manipular utilizando TableView

public class Usermaster{ public SimpleIntegerProperty userId = new SimpleIntegerProperty(); public ObjectProperty userPhoto = new SimpleObjectProperty(); public SimpleStringProperty userName = new SimpleStringProperty(); public SimpleStringProperty userPassword = new SimpleStringProperty(); public SimpleStringProperty userType = new SimpleStringProperty(); public SimpleStringProperty encPass = new SimpleStringProperty(); public SimpleStringProperty updt = new SimpleStringProperty(); public SimpleStringProperty uptm = new SimpleStringProperty(); public Integer getUserId() { return userId.get(); } public Object getUserPhoto() { return userPhoto.get(); } public String getUserName() { return userName.get(); } public String getUserPassword() { return userPassword.get(); } public String getUserType() { return userType.get(); } public String getEncPass() { return encPass.get(); } public String getUpdt() { return updt.get(); } public String getUptm() { return uptm.get(); } }

He probado este programa funcionando perfectamente.

Estoy empezando a aprender javaFX y necesito llenar una tabla con datos de mi base de datos. He leído mucho código en línea, pero no he encontrado lo que estaba buscando. Leí this pero no sé cómo implementar esa última función. Leí otro código para hacer eso y hasta ahora esto es parte de mi código:

@FXML private TableView<User> table; @FXML private TableColumn<User, String> nameCol; @FXML private TableColumn<User, String> emailCol; private ObservableList<User> data; public void initialize(URL location, ResourceBundle resources) { nameCol.setCellValueFactory(new PropertyValueFactory(“name”)); emailCol.setCellValueFactory(new PropertyValueFactory(“email”)); buildData(); } public void buildData() { Connection connect = new Connection(); Statement st = connect.Connect(); data = FXCollections.observableArrayList(); try { ResultSet rs = st.executeQuery("SELECT * FROM USER"); while (rs.next()) { ObservableList<User> row = FXCollections.observableArrayList(); for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) { row.add(rs.getString(i)); System.out.println(row); } data.add(pol); } tabla.setItems(data); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, ex); } }

Espero que puedas ayudarme