2016-07-15 14 views
-2

テーブルビューでデータを表示できません。コンソールでは結果セットのデータを表示していますが、javafxで表示できません。助けてください。javafxテーブルビューでデータベースからデータが表示されない

クラスRoomDetails

package application; 

public class RoomDetails<object> { 

    rmlist rmList = new rmlist(); 
    getroom getRoom = new getroom(); 

    @FXML 
    private Button btnRoom_add; 
    @FXML 
    private Button btnRoom_update; 
    @FXML 
    private Button btnRoom_del; 
    @FXML 
    private TableView<ListRoom> tblroomdetails; 
    @FXML 
    private TableColumn<object, Object> tblroomno; 
    @FXML 
    private TableColumn<object, Object> tblroomtype; 
    @FXML 
    private TableColumn<object, Object> tblac; 
    @FXML 
    private TableColumn<object, Object> tbltariff; 
    @FXML 
    private TableColumn<object, Object> tblstatus; 
    @FXML 
    private Label lblRoomdetails; 


    Dbconnection dbcon = new Dbconnection(); 
    Connection con; 
    PreparedStatement pst; 
    ResultSet rs; 

    @FXML 
    public void btnRoom_addonAction(ActionEvent event) throws IOException{ 
     FXMLLoader fXMLLoader = new FXMLLoader(); 
     fXMLLoader.setLocation(getClass().getResource("/application/AddRoom.fxml")); 
     try{ 

    fXMLLoader.load(); 
      Parent parent = fXMLLoader.getRoot(); 
      Scene scene = new Scene(parent); 
      scene.setFill(new Color(0, 0, 0, 0)); 
      AddRoom addRoom = fXMLLoader.getController(); 
      addRoom.lbl_Add_Room.setText("ADD Room"); 
      Stage stage = new Stage(); 
      stage.setScene(scene); 
      stage.initModality(Modality.APPLICATION_MODAL); 
      stage.initStyle(StageStyle.TRANSPARENT); 
      stage.show(); 

     } 
     catch(IOException e){ 
      e.printStackTrace(); 
     } 
     } 

    public void viewDetails() { 
     tblroomdetails.setItems(rmList.roomlist); 
     getRoom.rmview(rmList); 
     tblroomno.setCellValueFactory(new PropertyValueFactory<>("roomno")); 
     tblroomtype.setCellValueFactory(new PropertyValueFactory<>("rmtype")); 
     tblac.setCellValueFactory(new PropertyValueFactory<>("acstat")); 
     tbltariff.setCellValueFactory(new PropertyValueFactory<>("rmtariff")); 
     tblstatus.setCellValueFactory(new PropertyValueFactory<>("rmstatus")); 

}  
} 

クラスgetroom

package application; 

public class getroom { 


    Dbconnection dbcon = new Dbconnection(); 
    Connection con; 
    PreparedStatement pst; 
    ResultSet rs; 

    public void rmview(rmlist rmList) { 
     con = dbcon.geConnection(); 
     try{ 
      pst = con.prepareStatement("select * from room"); 
      rs = pst.executeQuery(); 
      System.out.println(rs); 
      while (rs.next()){ 
       rmList.roomno = rs.getString(1); 
       rmList.rmtype = rs.getString(2); 
       rmList.acstat = rs.getString(3); 
       rmList.rmtariff = rs.getString(4); 
       rmList.rmstatus = rs.getString(5); 
       } 
       rs.close(); 
       pst.close(); 
       con.close(); 

     } catch (SQLException e) { 
      e.printStackTrace(); 
      } 
    } 
    } 

クラスListRoom

package application; 

public class ListRoom { 

    public String roomno; 
    public String rmtype; 
    public String acstat; 
    public String rmtariff; 
    public String rmstatus; 
    public ListRoom(String roomno, String rmtype, String acstat, String rmtariff, String rmstatus) { 
     super(); 
     this.roomno = roomno; 
     this.rmtype = rmtype; 
     this.acstat = acstat; 
     this.rmtariff = rmtariff; 
     this.rmstatus = rmstatus; 
    } 
    public String getRoomno() { 
     return roomno; 
    } 
    public void setRoomno(String roomno) { 
     this.roomno = roomno; 
    } 
    public String getRmtype() { 
     return rmtype; 
    } 
    public void setRmtype(String rmtype) { 
     this.rmtype = rmtype; 
    } 
    public String getAcstat() { 
     return acstat; 
    } 
    public void setAcstat(String acstat) { 
     this.acstat = acstat; 
    } 
    public String getRmtariff() { 
     return rmtariff; 
    } 
    public void setRmtariff(String rmtariff) { 
     this.rmtariff = rmtariff; 
    } 
    public String getRmstatus() { 
     return rmstatus; 
    } 
    public void setRmstatus(String rmstatus) { 
     this.rmstatus = rmstatus; 
    } 


} 

クラスrmlist

package application; 

public class rmlist { 

    public String roomno; 
    public String rmtype; 
    public String acstat; 
    public String rmtariff; 
    public String rmstatus; 
public ObservableList<ListRoom> roomlist = FXCollections.observableArrayList(); 

} 
あなたは何度も何度も rmviewインスタンスのフィールドを割り当てるが、あなたは rmviewroomlistが変更されることはありません修正することはありません埋める getRoom.rmview方法では

クラスのDBConnection

package application; 

class DBconnection{ 
     public Connection con; 
     String username = "root"; 
     String password = "123456"; 
     String driverclass = "com.mysql.jdbc.Driver"; 
     String db_url = "jdbc:mysql://localhost:3306/"; 
     String unicode= "?useUnicode=yes&characterEncoding=UTF-8&useSSL=false"; 

     public Connection mkDataBase() throws SQLException{ 
       try { 
        Class.forName("com.mysql.jdbc.Driver"); 
        con = DriverManager.getConnection(db_url, username, password); 

       } catch (Exception e){ 

       } 
       return con; 
      } 

      public Connection geConnection(){ 

       try { 
        Class.forName("com.mysql.jdbc.Driver"); 
        con = DriverManager.getConnection(db_url+"hotel"+unicode, username, password); 

       } catch (ClassNotFoundException | SQLException ex) { 
        System.out.println("Too Many Connection"); 
       } 

       return con; 
      } 
     } 
+0

「Dbconnection」とは何ですか? –

+0

@James_Dこれは、クラス定義がありません:)) – NwDev

+3

なぜ、助けが必要な人は、彼らの質問が理にかなっているかどうかを確認する時間を取ることができません。 –

答えて

1

。それは空のままです。 TableViewroomlistを使用しているため、表示するデータはありません。

かわりに、データベースクエリが返す行ごとに新しい要素を追加する必要があります

// remove data previously in the list 
rmList.roomlist.clear(); 

while (rs.next()){ 
    rmList.roomlist.add(new ListRoom(rs.getString(1), 
            rs.getString(2), 
            rs.getString(3), 
            rs.getString(4), 
            rs.getString(5))); 
} 

さらに私はthe naming conventionsに付着をお勧めします。とりわけabreviationsの部分は、あなたのコードを他人のために読むのが難しくなるからです。さらにobjectは型パラメータの名前として悪い選択です。混乱の原因となり、通常は大文字の単一の文字が型パラメータとして使用されます。

また、rmlistクラスの目的は不明です。 ListRoomと同じフィールドが含まれていますが、実際にデータを格納するリストも含まれています。なぜそれらのフィールドが必要ですか? rmlistが必要ですか、それともObservableList<ListRoom>と置き換えることができますか?

+0

ありがとう、それは私の問題を解決しました。次回以降は名前付けに注意します。 –

関連する問題