2012-08-26 306 views
0

我寫這個簡單的代碼來填充jTable1,但它只是填充jTable1與數據庫的最後一行。從數據庫填充JTable

String SQL = "select * from usernames"; 
ResultSet rs = stmt.executeQuery(SQL); 
String[] columnNames = {"Full Name", "Email"}; 
String n = "",e = ""; 
while(rs.next()) { 
    n = rs.getString("Full_Name"); 
    e = rs.getString("Email"); 
    Object[][]data = {{n,e}}; 
    jTable1 = new JTable(data, columnNames); 

}  

回答

2

是的,它將始終是最後一行,因爲在while循環中您正在創建新的JTable,而不是將行添加到現有的行。所以,做這樣的,

// Code 
DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); 
while(rs.next()) 
{ 
    n = rs.getString("Full_Name"); 
    e= rs.getString("Email"); 
    //Object[][]data={{n,e}}; 
    // This will add row from the DB as the last row in the JTable. 
    model.insertRow(jtable1.getRowCount(), new Object[] {n, e}); 
}  
+0

沒有加入到JTable中 – user1625324

+0

@ user1625324我已編輯的代碼解決了這個問題。 – Amarnath

+0

我可以只在這一行上進行更改將項目添加到jTable1而無需每次創建新的JTable。 – user1625324

2

我這段代碼

String n = "",e = "";  

DefaultTableModel model; 
model = new DefaultTableModel(); 
jTable1 = new JTable(model); 

model.addColumn("Full Name"); 
model.addColumn("Email"); 

while(rs.next()) 
{ 
    n = rs.getString("Full_Name");  
    e= rs.getString("Email"); 
    model.addRow(new Object[]{n,e}); 
}