Java 在数据库获取操作期间显示jprogress条

Java 在数据库获取操作期间显示jprogress条,java,swing,Java,Swing,我正在使用JavaSwing查询具有数百万条记录的历史记录表。因此,完成这项工作需要20分钟。在此之前,我需要显示jProgressBar或其他东西,向用户显示查询仍在运行。怎么做?还有如何找到进度条的最大编号?因为它有一百万行,所以我不能使用总行数来完成它。请提问。还建议除jProgressbar之外的任何其他选项。而不是一次获取所有记录以块获取数据 现在,在接收到卡盘大小和记录总数的数据后,增加进度条 如果没有数以百万计的记录,那么在单个事务中获取所有数据不是一个好方法。有时它会导致OutO

我正在使用JavaSwing查询具有数百万条记录的历史记录表。因此,完成这项工作需要20分钟。在此之前,我需要显示jProgressBar或其他东西,向用户显示查询仍在运行。怎么做?还有如何找到进度条的最大编号?因为它有一百万行,所以我不能使用总行数来完成它。请提问。还建议除jProgressbar之外的任何其他选项。

而不是一次获取所有记录以块获取数据

现在,在接收到卡盘大小和记录总数的数据后,增加进度条

如果没有数以百万计的记录,那么在单个事务中获取所有数据不是一个好方法。有时它会导致
OutOfMemoryError
Transaction 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
选择*
从(选择q.*,rownum rnum)
from([您的查询在这里])q
其中rownum=(chunk\u number-1)*chunk\u size+1

您确定总是需要20分钟吗?使用
JProgressBar#getValue()
获取进度条的当前值。如何获取这样的值。我以前从未听说过。如何从数据库中获取数据?类似于使用普通查询。从employee\u his中选择名称、id,然后将每条记录写入数组,并将其传递给另一个方法以excel形式写入。我在pos中共享了一个链接t、 这是可以的,但我仍然想知道进度条如何知道最大值并显示正确的进度。。