ADO 组件 CommandTimeout

2023-11-21

我对 TADOQuery、TADOCommand 或 TADODataSet 的查询执行超时设置有疑问(我已经对每一个都进行了尝试)。我有一个小型应用程序,它连接到数据库并定期执行存储过程,该过程返回数据集作为结果。 我的目标是保持此应用程序始终在线,但我的问题是,当连接丢失时,刚刚执行的命令(通过上述组件之一)的超时时间默认为 30 秒。我一直在寻找解决方案,但没有任何效果。您能给我一个建议,如何设置 CommandTimeout 例如到 5 秒或更佳,请说明如何修改 ADODB.pas 以尊重我自己的超时?

为此有很多“解决方案”,例如 set DataComponent.Connection.CommandTimeout := 1;但实际上,没有任何作用。我正在使用 D2009、MSSQL2005,并且连接和数据组件是在线程中动态创建的。

最后,我尝试过的是这个

// protected variable owned and created in the thread with its own connection
var Query_Object: TADODataSet; 

// connection timeout is set to 3 seconds
Query_Object.Connection.ConnectionTimeout := 3;
...

// this piece of code I'm calling periodically in the only one existing thread
...
SQL_Query := 'EXEC my_procedure_which_returns_dataset'

with Query_Object do
  begin
    Close;    
    CommandType := cmdText;
    CommandText := SQL_Query;
    CommandTimeout := 5;             // doesn't affect the timeout
    CursorLocation := clUseServer;   // let the dataset retreives prepared data
    Open;
  end;

// and here I need to get faster than in the default 15 seconds to let the user
// know that the reading takes more than mentioned 5 seconds
...

多谢 :)


CommandTimeout当您有长时间运行的查询时就会启动。有一个CommandTimeout的财产TADOConnection但这不起作用。你必须使用CommandTimeout of the TADODataSet反而。

如果服务器不可用,您的问题显示“连接丢失”,您需要指定ConnectionTimeout of the TADOConnection成分。默认为 15 秒后控制权返回到您的应用程序。

Edit 1我想我发现了 CommandTimeout 不起作用的情况。我已经在一张非常大的桌子上对此进行了测试。返回所有行需要几分钟时间。如果我的存储过程是select * from BigTable查询超时永远不会发生。至少我没有足够的耐心等待它结束。但如果查询看起来像这样select * from BigTable order by Col1并且没有索引Col1,CommandTimout 按预期工作。

在 SSMS 中运行这两个查询时,它们之间的差异很明显。第一个开始立即返回行,第二个需要在返回行之前“考虑”它。当 SQL Server 找到它需要的行并开始返回它们时,CommandTimeout 不起作用。

如果你设置CursorLocation to clUseServer the CommandTimeout对于两个查询都将按预期工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ADO 组件 CommandTimeout 的相关文章

  • Delphi - 相当于C#的三元运算符? [复制]

    这个问题在这里已经有答案了 可能的重复 Delphi 中是否存在或者将来是否存在条件运算符 https stackoverflow com questions 2108609 is there or is there ever going
  • 在 Delphi XE 中将类作为过程的参数传递

    我需要做的是这样的 procedure A type of form var form TForm begin form type of form Create application form showmodal freeandnil f
  • 如何将 TGifImage 中的帧提取为位图?

    下面的演示尝试在表单的画布上绘制 GIF 这不起作用 图像不会前进 如何让它发挥作用 procedure TForm1 FormCreate Sender TObject begin GIF TGIFImage Create GIF Loa
  • 如何防止 Internet Explorer 连接超时?

    如果网站处理和加载页面的时间超过 10 秒 Internet Explorer将做一个connection timeout 用户可以通过将注册表中的默认值设置为更高的值来防止这种情况发生 但我真的不能告诉我的任何客户这样做 所以我如何首先防
  • 在 Delphi 2007 中将具有透明度的位图保存为 PNG

    我有一个包含透明度信息的 Delphi 位图 32 位 我需要将其转换并保存为 PNG 文件 同时保留透明度 我目前拥有的工具是graphics32 Library GR32 PNG 由Christian Budde 提供 和PNGImag
  • 设置Paramiko模块的sftp.get()时间限制

    我正在使用 Paramiko 的 SFTP 客户端将文件从远程服务器下载到客户端 即获取操作 要传输的文件有点大 1GB 所以我希望如果时间超过10秒 get操作就会超时 但是设置连接的超时值不起作用 它似乎只是创建 SSH 连接的超时 而
  • PHP:如何检查 Guzzle 4 中的超时异常?

    如果请求期间发生错误 Guzzle 会引发异常 不幸的是 似乎没有特定于超时的错误 这对我来说很重要 因为我知道这些错误偶尔会发生 我想重试相应的请求 并且需要能够判断错误是否是由于超时而发生的 来自docs http docs guzzl
  • 如何将数据库查询的行转换为 XML 文件?

    我正在开发一个 Delphi 应用程序 该应用程序需要从一段工作中获取行并将其转换为单个 XML 文件 以便上传到第三方 Web 服务 有没有可用的组件或库可以做到这一点 如果不是 那么构建 DB2XML 转换器的最佳代码方法是什么 我注意
  • FreePascal x64 上系统单元函数的汇编调用

    我有一些 Delphi 汇编代码 可以在 Win32 Win64 和 OSX 32 上编译并正常工作 XE2 但是 由于我需要它在 Linux 上工作 所以我一直在考虑编译它的 FPC 版本 到目前为止 Win32 64 Linux32 6
  • Linux shell 脚本中的 while 循环超时

    这工作正常 无限循环 while TRUE do printf done 我在尝试着timeout this while loop与timeout命令 所有这些都不起作用 timeout 5 while TRUE do printf don
  • 调试器异常错误和内存超调

    我尝试运行以下代码 但它显示有关内存地址的错误 并显示一条消息 循环后 n 可能未定义 请看一看 var n max integer n integer r R1 f h0 Array of Real const h 0 00889 nip
  • Delphi 流畅的界面

    使用上有什么优点和缺点流畅的界面 http en wikipedia org wiki Fluent interface在德尔福 流畅的界面应该会增加可读性 但我对此有点怀疑one包含很多链式方法的长 LOC 是否存在编译器问题 是否存在任
  • 如何用不同的颜色绘制选定的列表框项目?

    是否可以更改 TListBox 中的项目选择焦点颜色和文本颜色 当项目中未启用主题或列表框样式设置为所有者绘制时 项目周围的选择将被涂成蓝色 我相信这是由系统的外观设置全局定义的 我想将所选项目的颜色更改为自定义颜色 举个例子 结果会是这样
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 从 Delphi VCL 样式获取特定字形

    我想从 VCL 样式获取特定的位图 并将其设置为按钮上的图像 它实际上是帮助问号 在位图样式编辑器中是来自表单的 btnHelp 图像 要从 VCL 样式获取视觉元素 字形 您必须使用GetElementDetails和TCustomSty
  • 如何从该 JAVA 文件中提取 Delphi 类以与 Android 一起使用?

    我的Delphi XE7项目需要与FTDI FT311 Android 配件芯片 http www ftdichip com Products ICs FT311D html 他们帮助提供了一个 Android 演示 其中包括他们的 JAV
  • 阻止 IDE 自动添加使用单位

    我正在将 Lazarus 项目转移到德尔福西雅图 Lazarus 项目依赖于 40 多个单元 包括控件 并具有多种应用程序 在所有项目的使用条款中 他们使用了以下内容 uses Classes SysUtils Forms Controls
  • 如何在表单上绘制半透明图像?

    我想在 Delphi 窗体上绘制半透明图像 但由于某种原因它不起作用 Here is the original PNG border is semi transparent 我将图像加载到TImage object Image1 Trans
  • 在 Delphi 中淡入 alpha 混合 PNG 表单

    几年前 当 Vista 首次发布时 我曾提出过这个问题 但始终没有解决这个问题 并把它搁置起来 留待以后再考虑 我有一个启动屏幕 我花了很大力气让它看起来很棒 这是 32bpp alpha 混合的 PNG 我有一些代码 如果需要 我可以挖掘
  • 如何读取和更改 TEdit 控件的值?

    我有一个表格TForm1有 5TEdit and 2 TBitBtn 我还需要该程序 以便在输入数字数据后Edit1 and Edit2 on BitBtn1Click Edit1 and Edit2值将被求和并显示在Edit3 你想做这样

随机推荐

  • 链接器找不到符号,但已读取库并且符号存在

    我一直在尝试编译我的项目 并且得到了undefined reference错误 例如 installertest cpp text 0x9d1 undefined reference to XmlRpcValue makeArray ins
  • 有没有比字符串操作更好的替代方案来以编程方式构建公式?

    其他人的函数似乎都采用公式对象 然后在内心深处对它们进行黑暗魔法 我很嫉妒 我正在编写一个适合多个模型的函数 这些模型的部分公式保持不变 部分公式从一个模型到下一个模型有所变化 笨拙的方法是让用户将公式部分作为字符串输入 对它们进行一些字符
  • 如何在 Vsix 扩展中进行 dll 绑定重定向?

    我有一个 VS 扩展 它应该使用 Gmail api 向我公司的某些用户发送邮件 在开发过程中我遇到了一个常见问题System Net Http PrimitivesGoogle API 中的版本有些混乱 The 共同解决方案因为这是把bi
  • 如何在laravel中隐藏关系列?

    我有这样的声明 App User with client gt find 2 gt makeHidden client phone no 我想从关系中隐藏某些列 但我不能这样做makeHidden 因为它只需要参数Model不是关系 如何从
  • 如何处理 iOS 4.3 中的 MKReverseGeocoder / PBHTTPStatusCode=503 错误?

    自 iOS 4 3 GM Seed 10M2518 以来 我在使用时遇到崩溃MKReverseGeocoder reverseGeocoder didFailWithError 经常被调用并出现这样的错误 Error Domain NSUR
  • C++ 逻辑 & 运算符

    C 中有逻辑 运算符吗 例如一个与 一样工作的运算符 除了它还会评估后面的参数 即使前面的一些参数已经评估为 false 运算符 是我理解的按位与运算符 运算符 确实是按位运算符 我假设你有类似的东西 if f g do something
  • Java中如何用逗号和空格分割表达式?

    例如 源数据 some blabla sentence example 等待的结果 some blabla sentence example 我可以用逗号分隔 但不知道如何同时用逗号和空格分隔 到目前为止我的源代码 string split
  • 用于检查以 .jpg、.png 或 .gif 结尾的有效 URL 的正则表达式

    我希望用户提交一个有效且以 jpg png 或 gif 结尾的图像的 URL jpg gif png 这是官方 URI 解析正则表达式的 稍作修改 版本RFC 2396 它允许 fragments and querystrings出现在文件
  • Yii2 中的 authTimeout

    我正在尝试自动注销用户yii2当他闲置了固定的秒数后 在web php我添加了 user gt identityClass gt app models User enableAutoLogin gt true authTimeout gt
  • 会话“应用程序”:启动活动时出错

    Android Studio 2 0 更新后 gradle 构建完成后 我得到以下信息 会话 应用程序 启动活动时出错 它阻止应用程序启动 但它安装在我的模拟器中 这是 运行 选项卡中出现的内容 执行时出现意外错误 am start n c
  • 当相关类在编译和链接时存在并且在代码中显式存在时,运行时引发的 EClassNotFound 真正意味着什么?

    我在表单中的 rtl Streaming 中发生运行时错误 导致在执行 TReader ReadRootComponent 时引发异常 EClassNotFound 具体的错误消息是 找不到类 TActionList 奇怪的是 我的主窗体使
  • C++:如何在不使用库的情况下序列化/反序列化对象?

    我试图了解序列化 反序列化在 C 中如何在不使用库的情况下工作 我从简单的对象开始 但是当反序列化向量时 我发现 如果不先写入向量的大小 我就无法获取向量 此外 我不知道应该选择哪种文件格式 因为 如果数字存在于矢量大小之前 我将无法正确读
  • HttpClient PostAsJsonAsync 在 .NET Core 和 Classic .NET 中的行为不同

    我在 IIS 中托管一个经典 NET WebAPI 端点 它接受上传文档的 POST 请求 我创建了两个控制台应用程序 用于连接到 WebAPI 并上传文档 一个是经典的 NET v4 6 2 控制台应用程序 另一个是 NET Core 控
  • 如何修复缺少 JavaFX 运行时组件的问题?

    我在 Ubuntu 18 04 1 LTS 上安装了以下软件 openjdk version 10 0 2 2018 07 17 OpenJDK Runtime Environment build 10 0 2 13 Ubuntu 1ubu
  • GETDATE() 抛出异常

    我正在创建一个简单的应用程序 我正在使用MSAccess作为数据库 当我尝试使用下面的查询检索数据时 我收到异常未定义函数 GETDATE select from tempdata where dateissue between DATEA
  • ASP.NET 相当于此 cURL 命令

    我正在使用 Twilio API 它提供了 PHP 和 Ruby 示例 我正在开发一个网站 通过 ASP NET MVC 3 中编码的 API 发送文本消息 并利用我对 WebRequest 对象的有限知识 我能够翻译以下内容 curl X
  • 在带有 map() 的嵌套数据框中使用 filter() (和其他 dplyr 函数)

    我正在尝试使用map of purrr申请包filter 函数存储在嵌套数据框中的数据 为什么不先过滤 然后再筑巢呢 你可能会问 这会起作用 我将使用这样的过程展示我想要的结果 但我正在寻找方法来做到这一点purrr 我只想有一个数据框 其
  • 如何在 C# 中将西里尔字母字符串转换为英语

    是否可以在 C 中将西里尔字母字符串转换为英语 拉丁语 例如 我需要将 转换为 Petroleum 另外 我忘了提到 如果我有西里尔字符串 它需要保持这样 所以我可以以某种方式检查吗 我不熟悉西里尔字母 但如果它只是您想要的西里尔字母到拉丁
  • 了解不支持的操作异常

    我不太明白在哪里可以抛出这个异常 例如 我正在实施Future
  • ADO 组件 CommandTimeout

    我对 TADOQuery TADOCommand 或 TADODataSet 的查询执行超时设置有疑问 我已经对每一个都进行了尝试 我有一个小型应用程序 它连接到数据库并定期执行存储过程 该过程返回数据集作为结果 我的目标是保持此应用程序始