2015-12-29 120 views
0

中填充jtable使用此代碼,表已成功填充,但未顯示任何消息對話框插入jtable!無法從結果集java

String sql2 = "SELECT type, amount FROM lasttransactions where cust_id = ?"; 
PreparedStatement ps2=conn.prepareStatement(sql2); 
ps2.setInt(1,Integer.parseInt(_userid)); 
ResultSet rs2=ps2.executeQuery(); 


DefaultTableModel model = (DefaultTableModel) transtable.getModel(); 
Object[] row; String type; double amount ; 
while(rs2.next()) { 
    type = rs2.getString("type"); 
    amount = rs2.getDouble("amount"); 

    row = new Object []{ type, amount };    


    model.addRow(row); 
    JOptionPane.showMessageDialog(null,"added !"); 


    transtable.setModel(model); 
} 
+0

看起來okayish(你不管理您的資源非常好),考慮做這表明你的問題 – MadProgrammer

+0

@MadProgrammer我太對不起我還在初學所以如何管理我的資源可運行的例子嗎? 我的問題是沒有這個消息行沒有加載到表 – heba

+0

JOptionPane應該不會影響加載到TableModel中的數據。我可以根據提供的代碼建議的唯一方法是擺脫setModel(...)方法。您直接更新表格的TableModel,因此您無需設置模型。 – camickr

回答

0

我是如何做到的,可以幫助您解決您的問題。

ResultSet rs = null; 
    try{ 
     connection = DriverManager.getConnection("jdbc:mysql://localhost/myDB", "root", "password"); 
     Class.forName("com.mysql.jdbc.Driver"); 
     Statement stmt = connection.createStatement(); 
     String query = "select * from somewhere;"; 
     rs = stmt.executeQuery(query);   
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     rs.close(); 
    } 
    table.setModel(DbUtils.resultSetToTableModel(rs)); 
+0

'rs'當你嘗試關閉它時可能是'null',你也沒有關閉'stmt',並且通常應該使用'PreapredStatement'(我知道,這是一個簡單的查詢,但是它也很簡單地使用'PreapredStatement'時間)。坦率地說,'DbUtils'只是一個痛苦,並提出了更多的問題,然後實際上手動創建表模型 – MadProgrammer