【发布时间】:2015-05-15 13:03:49
【问题描述】:
我有一个Delphi 应用程序通过BDE + ODBC 连接到MS-SqlServer-2008R2。使用Delphi 7 开发。
使用TDatabase, TTable, TQuery 组件访问数据。
TDatabase 指向 BDE 中的别名,其他组件使用属性 TDatabase.Databasename。
主事务表有超过 300 000 条记录。
在主应用程序中当我查询表时,TQuery 给出的记录数为 250 万,但我的表只有 30 万条记录。查询后打开应用程序就崩溃了。这里有什么问题?
如果我调试代码,它会在TQuery.Open 处提供"Memory Error"。但是在运行应用程序时它没有给出任何错误,只是应用程序崩溃了。
我在打开查询之前在任务管理器中检查了内存使用情况,只是20 MB,但打开查询后应用程序使用的内存超过了700 MB memory。
复制相同的查询并在 SQL Server Management Studio 中运行并获得 45000 条记录。
再次使用一个表单和一个 TQuery 、 TDatabase 创建了一个小应用程序,然后运行查询,它给出了正确的计数 45000。
为什么它在主应用程序中给出不寻常的记录数?
【问题讨论】:
-
请重新检查您的查询,JOINS 一定有问题
-
有这么多可能的问题,你还没有提供足够的信息让任何人给出答案。您是否连接到同一个数据库。您的连接设置是否相同。在 SQL Server 中,您是否使用相同的架构/用户?你真的需要 BDE 吗?它已被正式弃用。
-
请出示您的查询,以便我们开始深入研究。
标签: sql-server delphi bde tquery