2016-12-04 29 views
0

我有一个ArrayList具有1000个插入SQL语句。但是在执行时间中,Iterator的延迟或(针对此循环的增强)针对此ArrayList需要1分钟。而且我的JFrame在这段时间内没有回应。我能做什么?由于Iterator或foreach中的延迟

Iterator itr = stms.iterator(); 
     while (itr.hasNext()) {     

      DB_STM.executeUpdate((String) itr.next()); 
     } 
+0

发布整个代码! –

+2

不要责怪迭代器,它是让execute变慢的'executeUpdate'。 – Kayaman

+3

不要在事件分派线程中执行慢代码。使用SwingWorker。 –

回答

1

foreach仅在内部使用iterator,以处理从JDBC批量更新和插入,您可以使用addBatch()PreparedStatementexecuteBatch()如图here

只是与此相关的问题,请使用批量更新内部环路延迟。你是否同意 ?

不,我不同意。基本上,你的代码很少有设计问题。 (1)您应该在后台处理大量(按时间)操作批量&(如使用其他人建议的SwingWorker)。 (2)使用JDBC addBatch()executeBatch()来降低数据库命中率&提高了性能。

+0

谢谢亲爱的。问题是存在的!这个问题只与循环的内部延迟有关。你同意我吗 ? – DanialAbdi

+0

检查更新的答案上面 – developer

+0

感谢您的评论。我发现了这个问题。因为我的db是mySQL coummunity !.我在mysql中查询区中复制纯SQL语句。情况是这样的。 1000插入语句40秒。 – DanialAbdi