我有一个Delphi
应用程序通过MS-SqlServer-2008R2
连接到BDE + ODBC
。使用Delphi 7
开发。
使用TDatabase, TTable, TQuery
组件访问数据。
TDatabase
指向BDE中的别名,以及使用属性TDatabase.Databasename
的其他组件。
主要交易表有超过30万条记录。
主应用程序中的当我查询表时,TQuery
给出的记录数为250万,但我的表只有300k记录。查询打开应用程序后崩溃了。这有什么问题?
如果我调试代码,它会在"Memory Error"
处提供TQuery.Open
。但是在运行应用程序时,它没有给出任何错误,只是应用程序崩溃了。
我在打开查询只是20 MB
之前检查了任务管理器中的内存使用情况,但在打开查询后,应用程序使用了超过700 MB memory
。
复制相同的查询并在SQL Server管理工作室中运行并获得45000条记录。
再次创建了一个包含一个表单和一个TQuery
,TDatabase
的小应用程序,并运行查询,它提供正确的计数45000。
为什么它会在主要应用程序中给出不寻常的记录数?
答案 0 :(得分:2)
检查数据库组件属性'Params'。如果任何param设置为RowSet Size = -1。如果它在那里然后删除它。这就是问题的原因。