问题标签 [tadoquery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - ADO 组件 CommandTimeout
我在使用 TADOQuery、TADOCommand 或 TADODataSet 设置查询执行超时时遇到问题(我都试过了)。我有一个很小的应用程序,它连接到数据库并定期执行存储过程,结果返回数据集。我的目标是让这个应用程序始终在线,但我的问题是,当连接丢失时,刚刚执行的命令(通过上述组件之一)的超时时间默认为 30 秒。我一直在寻找解决方案,但没有任何效果。 您能否给我一个建议,如何将 CommandTimeout 例如设置为 5 秒或更好地说明如何修改 ADODB.pas 以尊重我自己的超时,好吗?
对此有很多“解决方案”,例如 set DataComponent.Connection.CommandTimeout := 1; 但实际上,没有任何效果。我正在使用 D2009、MSSQL2005 和数据组件的连接是在线程中动态创建的。
最后,我试过的是这个
非常感谢 :)
sql - DELPHI ADOQuery - 检测是否将返回数据集
我正在为执行 SQL 查询的正确程序而苦苦挣扎。
基本上,我有文本字段,用户可以在其中输入 SQL 代码,程序将执行它。不幸的是,我不知道是否会返回数据集,所以我无法确定使用哪个函数:ADOQuery.Open 或 ADOQuery.ExecSQL
但是如果有返回结果,我需要进行一些计算。
有什么方法可以预测查询是否会返回一些结果,或者它是否只是 UPDATE ......如何处理这种情况?
string - Delphi - ADO 查询和 FillChar 生成错误
我有以下代码:
cSpacesAfter 是一个常量,值为 1035。 wSpaces 是一个本地字符串变量。问题是我在创建 TAdoQuery 时收到以下错误
即使是法语,我相信你明白了......
如果我评论 FillChar 代码,一切正常。我有通常的编译器指令,没什么特别的。我正在使用德尔福 7。
有人可以告诉我该代码有什么问题吗?
delphi - TADOQuery SQL.add() 提交/准备 sql
概述:
我编写了一个应用程序,允许用户定义查询、将其提交到服务器并查看结果。该软件可以在 DB2 或 MySQL 上运行。
问题:
我们在 DB2 版本中遇到了问题,用户尝试运行查询,但发现它失败了,因为他们的用户配置文件已被禁用。为了在 DB2(IBM i 上)上运行查询,连接字符串中提供了用户的配置文件名称和密码。服务器上的安全性可以指定在两次或三次错误登录后禁用用户的配置文件。
问题:
我调试了应用程序,发现问题归结为查询提交了两次。如果用户的密码错误,那么当然,这会产生禁用其个人资料的连锁反应。
进一步检查,当我检查服务器上的日志时(在逐行调试时),我发现当您调用 TADOQuery.sql.add() 时,查询已提交到服务器,而当 TADOQuery 的active 属性设置为 true(这是我希望将查询提交到服务器的点)。这是我用来运行查询的代码示例:
因此,我的问题很简单:
1. 为什么 TADOQuery.sql.add() 方法提交查询(当它应该只是将 sql 添加到 TADOQuery 的 sql 属性时)?
2. 我能做些什么来防止这种情况发生?即当我调用 add() 方法时,有什么方法可以防止 sql 被提交?
对于那些想要有关日志的额外信息的人,IBM i 上的出口点日志显示,当我在上面的示例中调用 adoqry.sql.add 时,查询是通过“数据库服务器-SQL 请求”出口运行的点应用程序,通过“准备和描述”功能。当我在上面的示例中调用 adoqry.active := true 时,相同的查询通过相同的出口点应用程序,但通过“打开/描述”功能。
如果您不熟悉 IBM i,请不要担心 - 我只是将这些信息包括在内,以证明我已经跟踪了两次提交的查询。真正的问题在于 TADOQuery 的 sql.add() 处理。
delphi - 如何将 TADOQuery.Parameters 与必须放在查询中的两个或多个位置的整数参数类型一起使用?
我有一个复杂的查询,其中包含多个必须替换相同主键值的位置。它看起来像这样:
当我尝试在这个重要的查询上使用整数参数时,对我来说似乎是不可能的。我收到此错误:
如果我取出:aBaitid
并替换文字,查询工作正常1
。
我还能对上面的这个查询做些什么吗?当我用这样的简单测试进行测试时:
这些简单的案例工作正常。该组件是TADOQuery
,它可以正常工作,直到您将任何内容添加:parameters
到 SQL 字符串。
更新:当我在运行时使用以下代码时,参数替换实际上已经完成(解决了 ADO 组件中的一些故障)和不同的错误表面:
现在错误变为:
再次注意,如果我只是停止使用参数替换功能,这个错误就会消失。
Update2:接受的答案表明我必须找到具有相同名称的参数的两个不同副本,这让我很困扰,所以我重新编写了这样的查询:
然后我在需要时在整个脚本中使用了@aVar,以避免重复使用:aBaitId
. (如果参数值的使用次数发生变化,我不想找到所有匹配名称的参数,并替换它们)。
我想像这样的辅助函数也可以: SetAllParamsNamed(aQuery:TAdoQuery; aName:String;aValue:Variant)
delphi - 如何将参数传递给 ADOQuery 对象?
我在 Delphi 7 和 Oracle 中使用 ADOQuery。将参数传递给 ADOQuery 时出现错误。我使用了以下行。请帮助我识别错误。
当我打开查询时,我会收到以下错误:
参数对象定义不正确。提供的信息不一致或不完整。
delphi - 有没有办法知道处于编辑状态的 TAdoQuery 是否已更改?
有没有办法知道处于编辑状态的 TAdoQuery 是否已更改?
假设我们强制它进入编辑状态,并且我们想询问用户是否想要保留更改。
sql - SQL 查询更新然后恢复更改
我目前对一个问题感到困惑。我可以从我的表中插入和删除记录,但我不能更新某些字段。它确实会在 0.5 秒后恢复更改之前暂时更新它,我实际看到了更改。顺便说一句,这是在 Delphi 7 中完成的:
我是否在 OI 中更新错误或遗漏了某些内容?它确实更新,只是不会使其永久化。
忘了说:表格单词列表有 3 个字段:一个名为 ID、english 和 afrikaans 的自动编号字段。自动编号是否会导致更新问题?
performance - Delphi Performance:读取数据集中某个字段下的所有值
我们正在尝试从 TADOQuery 中找出一些性能修复。目前,我们使用 'while not Q.eof do begin ... Q.next 方法遍历记录。对于每条记录,我们读取每条记录的 ID 和值,并将每条记录添加到组合框列表中。
有没有办法一次性将指定字段的所有值转换为列表?而不是遍历数据集?如果我可以做类似的事情,那将非常方便......
我知道这不是一个真正的命令,但这就是我正在寻找的概念。寻找快速响应和解决方案(一如既往,但这是为了解决一个非常紧迫的性能问题)。
delphi - 这里的“缺少 SQL 属性”是什么?
尝试执行代码时:
我收到错误消息“缺少 SQL 属性”。我哪里做错了?
提前致谢!