在数据库提取操作期间显示进度条

时间:2014-05-10 13:05:32

标签: java swing

我正在使用java swing查询包含数百万条记录的历史表。所以完成这项工作需要20分钟。直到我需要显示jProgressBar或其他东西来向用户显示查询仍在运行。怎么做?另外如何找到进度条的最大数量?由于它有数百万行,所以我无法使用总行数。请asvise。除了jProgressbar之外,还建议任何其他选项。

1 个答案:

答案 0 :(得分:0)

不是一次获取所有记录,而是在中获取数据。

现在,一旦在chuck大小和记录总数中收到数据,就会增加进度条。

如果没有数百万的记录,那么在单个事务中获取所有数据并不是一个好方法。有时会导致OutOfMemoryErrorTransaction TimedOut

  

如果可能,请将您的应用程序设计为以分页显示数据更高效,不需要20分钟以使最终用户满意。


请查看以下链接以完成此操作:

以分块形式读取数据的示例查询:

select * 
  from (select q.*, rownum rnum
       from ( [your query goes here] ) q
      where rownum <= chunk_number * chunk_size )
  where rnum >= ( chunk_number -1) * chunk_size + 1