2014-01-26 108 views
1

我想在我的表中添加一行...但下面的代碼在每行的末尾添加一行兩次...即,ii得到兩個相似的行而不是單行行增加了兩次jtable

DefaultTableModel tb=(DefaultTableModel)tb1.getModel(); 
Class.forName("com.mysql.jdbc.Driver"); 
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/db","root",""); 
Statement stmt=con.createStatement(); 
int a=(Integer) l1.getSelectedValue(); 
System.out.println(a); 
String query="select * from student where rno ="+a+";"; 
System.out.println(query); 
ResultSet rs=stmt.executeQuery(query); 
while(rs.next()){ 
    int rno=rs.getInt("rno"); 
    String name=rs.getString("name"); 
    String sec= rs.getString("sec"); 
    tb.insertRow(0,new Object[]{name,rno,name,sec}); 
    tb1.setModel(tb); 
+0

您確定您的ResultSet沒有重複的數據嗎? – mdewitt

+0

在添加新數據之前,似乎沒有從表模型中刪除任何現有數據 – MadProgrammer

回答

0

將這個呼叫後的循環,而不是在循環:

tb1.setModel(tb); 
0

沒有必要在所有到模型設置爲表。您已經投射了DefaultTableModel,除非您獲得投射例外,否則該表應該已經擁有DefaultTableModel。所以你只需要addRow(row)insetRow(index, row);。無需設置模型,表格將自動更新通過其DefaultTableModel