预先存在的jTable非常慢 - 即使是少量记录

时间:2016-07-19 04:58:35

标签: java sql performance jtable

再次寻求帮助......

我有一个运行的查询,当我在Netbeans中运行时它非常快(不到一秒钟)并且大约一秒钟显示信息。当我运行相同的查询并填充JTable(在设计时定义,而不是运行时)时,它非常慢。

DB有大约600条记录 - 延迟20秒 限制为10 - 延迟约10秒 限制为1 - 延迟约3秒

有没有办法让Tablemodel“更快”?

我已经考虑过分页,但是对于大约10条记录来说,即使延迟10秒也不是很好 - 我的代码必定存在问题(对不起,完整的Java Noob)。

以下是我的代码:

String SQL = "SELECT RecTable.ipkRecNo, RecTable.RecName order by ipkRecNo";

DefaultTableModel defaultModel = (DefaultTableModel) jTable1.getModel();
Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE   ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery( SQL );

int i = 0; 
String PreviousKey = "";
while ( rs.next( ) ) {
i++;
String MyRecNum = "";
String MyRecName = "";

if (rs.getString(1).trim() == PreviousKey.trim() ) {
} else {

MyRecNum = rs.getString(1);
MyRecName = rs.getString(1);

defaultModel.addRow(new Object[]{MyRecNum,MyRecName}); //1307
} 

1 个答案:

答案 0 :(得分:0)

addRow方法的Javadoc说明:

  

在模型中的行处插入一行。除非指定了rowData,否则新行将包含空值。 将生成正在添加的行的通知。

因此,生成了1307次事件。这会让你的节目变慢。