第二次执行SQL时出现TADOQuery错误

时间:2012-05-05 11:34:08

标签: delphi tadoquery

我在Windows XP和Windows7操作系统上的Delphi 7中通过TADOQuery组件获得了一个奇怪的行为。以下问题在Windows7操作系统上运行正常,但它在XP操作系统上出错。

让我解释一下这个场景,我有一个TADOConnection组件和两个TADOQuery组件。 TADOConnection组件具有ConnectionString属性的值,如下所示:

ADOConnection1.ConnectionString := 'Provider = MSDASQL.1; Password = My Password; User ID = My User ID; Data Source = My Data Source';

我已将角色/已授予权限应用于我登录到应用程序的用户ID /密码。

我已使用Connection属性将TADOConnection组件连接到TADOQuery组件。

当我执行第一个sql然后它工作正常没有任何错误,但当我执行第二个sql时,我在Windows XP操作系统上遇到以下错误。

  

[Microsoft] [SQL Server Native Client 10.0] [SQL Server] SELECT   对象'我的表名',数据库'我的   数据库名称',架构'dbo'

如果我在Windows7操作系统上执行它的代码相同,它没有任何错误。

任何人都可以把重点放在可能缺失的问题或可能出现的问题上吗?


我添加了“Persist Security Info = False;”连接字符串如下:

ADOConnection1.ConnectionString := 'Provider = MSDASQL.1; Persist Security Info = False; Password = My Password; User ID = My User ID; Data Source = My Data Source';

现在,每当我使用TADOQuery组件执行sql时,我每次都需要编写以下语句,即使我已经在开头设置了TADOQuery的“Connection”属性,我仍需要在执行时设置此属性sql。

ADOQuery1.Connection := ADOConnection1; 

但正如我所说,在Windows7上,无需更改TADOConnection组件的“ConnectionString”属性,也无需设置任何TADOQuery组件的“Connection”属性。

有人可以说出究竟要做什么吗?

如果您的应用程序太庞大且需要编码更改的地方,那么有人会同意吗?那么测试工作呢?在所有地方都必须进行测试,对吧?

所以,我仍在寻找合适的解决方案。这个问题仍然没有答案。

如果有人有任何线索或暗示或适当的解决方案,将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

  1. 您必须使用SQL事件探查器检查发生了什么。
  2. 我的打赌,ADO内部克隆连接或使用连接池,然后下一个查询拾取另一个物理连接。所以,你得到的错误。要禁用池,请将OLE DB Services=-4添加到连接字符串。