2011-05-31 29 views
0

使用JDBC和MySQL我在JTable中顯示一個MySQL表。 目前只要我的Java應用程序啓動,就會查詢數據庫表中的所有結果(例如SELECT * FROM tableExample),然後由JTable顯示結果。我的問題是,如果我想應用一個過濾器(或兩個)是不是更好地重新查詢MySQL表和更新JTable或是更好地使用TableRowSorter()?JTable TableRowSorter或重新查詢MySQL數據庫?

目前我的表格包含約23,000個結果。

此外,如果任何人有建議或代碼示例如何從新的查詢更新JTable我非常感謝。

在此先感謝。

回答

1

每個JTable都有一個TableModel來存放它的數據。默認實現是DefaultTableModel,但您可以實現自己的實現,具體取決於您要使用的過濾器。如果再次查詢數據庫,則可以在TableModel上設置數據,或者在JTable上設置TableModel的新實例。

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

...query the database, do either: 
model.setDataVector(...); 
table.setModel(new DefaultTableModel(...)); 

問題是,查詢數據庫還是客戶端過濾/排序無論如何都不能得到普遍的回答。這取決於你的環境和你的用例。如果您從遠程數據庫進行查詢,則可能會更好地進行客戶端過濾,因爲傳輸23k行數據需要很長時間。如果你的客戶端是一臺相當慢的機器,那麼在數據庫中排序可能比在Java中進行排序要快。如果這些資源不是問題,那麼請使用您更舒適的解決方案。 Java中的排序比SQL中的排序要多一點,另一方面,在Java中實現時,篩選功能更加通用。

1

有很多解決方法,爲您的問題,例如Table From DatabaseResultSet Table

搜索在這個論壇也

搜索對谷歌與ResultSetTableModel,

其哈特告訴其解決方法是更好的,

Currently my table contains ~23,000 results.因爲這樣會更好地減少SQL語句中的行數,