2012-08-26 237 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}); 
}