2017-05-31 56 views
0
的最後一條記錄

我試圖將我的數據庫表中的所有記錄顯示到JTable中。問題是,當我運行代碼時,它只會顯示錶格中的最後一條記錄。JTable只顯示來自表

代碼:

public uitgifteInfo() throws SQLException{ 

    final JFrame frame = new JFrame("Uitgifte punten"); 

    String[] columns = {"Nummer", "Adres", "Postcode", "Plaats", 
         "capaciteit"}; 

    String sql = "SELECT * FROM uitgiftepunt"; 

    try (
      Connection conn = connection.getConnection(); 
      Statement stmt = conn.createStatement(); 
      ResultSet rs = stmt.executeQuery(sql); 
     ){ 
      while (rs.next()) { 
       int nummer = rs.getObject("nummer", Integer.class); 
       String adres = rs.getObject("adres", String.class); 
       String postcode = rs.getObject("postcode", String.class); 
       String plaats = rs.getObject("plaats", String.class); 
       int cap = rs.getObject("capaciteit", Integer.class); 

       Object[][] data = { 
        {nummer,adres,postcode,plaats,cap} 
       }; 

       JTable table = new JTable(data, columns); 

       JScrollPane scrollPane = new JScrollPane(table); 
       table.setFillsViewportHeight(true); 

       JLabel lblHeading = new JLabel("Uitgiftepunt Info"); 
       lblHeading.setFont(new Font("Arial",Font.TRUETYPE_FONT,24)); 
       frame.getContentPane().setLayout(new BorderLayout()); 

       frame.getContentPane().add(lblHeading,BorderLayout.PAGE_START); 
       frame.getContentPane().add(scrollPane,BorderLayout.CENTER); 

      } 
     } 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(550, 550); 
     frame.setVisible(true); 
} 

不是Object應該顯示我的表中的所有記錄[] []數據?而不僅僅是最後一個。

+0

每1個維對象數組添加到列表和while循環表 – XtremeBaumer

回答

3

是不是對象[] []數據應該顯示我的表中的所有記錄?而不僅僅是最後一個

是的,但是您爲ResultSet中的每一行創建了一個新的2D數組和一個新的JTable。

相反,您需要在循環開始前創建一個空的DefaultTableModel,然後在循環內使用addRow(...)方法將ResultSet中的數據行添加到表模型中。

然後,當循環完成後,使用表模型創建表。

所以基本結構是:

DefaultTableModel model = new DefaultTableModel(columnNames, 0); 

while (rs.next()) 
{ 
    .... 
    model.addRow(...); 
} 

JTable table = new JTable(model); 
JScrollPane scrollPane = new JScrollPane(table); 
... 
+0

這工作之後添加它,謝謝! –