【问题标题】:Show the progress of an SQL Query in Delphi在 Delphi 中显示 SQL 查询的进度
【发布时间】:2010-08-25 14:28:36
【问题描述】:

是否可以在 Delphi 中显示 SQL 查询的进度?例如,我在 Firebird 中有一个很长的复杂查询,我想向用户显示系统已经完成了多少百分比的查询。是否有任何类或组件能够做到这一点?

【问题讨论】:

标签: sql delphi firebird


【解决方案1】:

AFAIK,无法测量查询执行时间并显示进度指示器。 DBMS 不提供此类信息。

但您可以显示“等待”对话框以取消查询。我们通过 AnyDAC 做到这一点。将 ResourceOptions.CmdExecMode 设置为 amCancelDialog 并删除 TADGUIxFormsAsyncExecuteDialog 组件。然后用户将能够取消查询。

【讨论】:

    【解决方案2】:

    这完全取决于您的数据库。有些发布这些信息(即 Oracle 将它们放在 v$session_longops 视图中),有些则不发布。通常您必须对查询进行线程化,除非数据库在此过程中提供某种回调 - 这也是数据库特定的功能。有些允许在结束之前终止长时间运行的查询,有些则不允许。检查您的数据库文档。并且如果某个功能可用,您用来访问数据库的库必须将其显示出来,否则您可能需要直接调用 DB 客户端库。

    【讨论】:

      【解决方案3】:

      我认为除了流程中数据检索部分的进度之外,您无法展示任何内容。当您将 SQL 发送到 Firebird 时,您将不会收到回复,直到您的程序准备好接收数据(取决于您使用的方法/组件。)

      【讨论】:

        猜你喜欢
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多