2017-03-21 18 views
0

私は、作成し、tableview(私はtableviewのシーンビルダを使用した)にデータを作成するスクリプトを作成しています。それはmysqlテーブルの列の数に応じて動的です。しかし、私はどのようにテーブルビューにデータを編集/挿入し、自動的にMySQLテーブルを更新するかについての解決策を見つけることができません。Javafx update tableview with tableview

ここは動的な列のためのコードであり、データベースからのデータの入力です。ところで、私が使用しているデータベーステーブルには50個のカラムがあります。

data = FXCollections.observableArrayList(); 
    try { 
     c = DBConnect.connect(); 
     //SQL FOR SELECTING ALL OF CUSTOMER 
     String SQL = "SELECT * from CAM_ODS_TIMESHEET_RAW_MOD"; 
     //ResultSet 
     ResultSet rs = c.createStatement().executeQuery(SQL); 

     /** 
     * ******************************** 
     * TABLE COLUMN ADDED DYNAMICALLY * 
     * ******************************** 
     */ 
     for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) { 
      //We are using non property style for making dynamic table 
      final int j = i; 
      TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i + 1)); 
      col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() { 
       public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) { 
        return new SimpleStringProperty(param.getValue().get(j).toString()); 
       } 
      }); 

      tableview.getColumns().addAll(col); 

      System.out.println("Column [" + i + "] "); 
     } 

     /** 
     * ****************************** 
     * Data added to ObservableList * 
     * ****************************** 
     */ 
     while (rs.next()) { 
      //Iterate Row 
      ObservableList<String> row = FXCollections.observableArrayList(); 
      for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) { 
       //Iterate Column 
       if (rs.getString(i) == null) { 
        row.add(""); 
       } else { 
        row.add(rs.getString(i)); 
       } 
      } 
      System.out.println("Row [1] added " + row); 
      data.add(row); 

     } 

     //FINALLY ADDED TO TableView 
     tableview.setItems(data); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     System.out.println("Error on Building Data"); 
    } 

私はまた、Personクラスのなどのようなモデルを使用していますが、私はどのように私は50列のような複数の列のために

はあなたの助けのために事前にありがとうございますことを使用することができます疑問に思って、複数の例を見てきました! :)

答えて

0

MYSQLテーブルのfx guiのようにあなたの要件のように聞こえます。 したい場合は、obserbleListのchanglistenerを追加し、SQL insert/update/deleteロジックを追加する必要があります。

ObservableList.addListener(ListChangeListener<? super E> listener)