使用ODBC和MidasLib在Delphi中出现内存不足错误

时间:2013-05-16 18:09:04

标签: delphi odbc ado delphi-2007

我有一个连接到连接到连接到DBGrid的DataSource的ClientDataSet的DataSetProvider的ADOQuery。在某些情况下,查询返回太多记录,并且我在MidasLib中遇到Out Of Memory错误。

我已经读过我可以使用DataReader,以避免将所有记录加载到内存中,但我没有看到如何使用DataReader并且仍然使DBGrid正常工作。我也找不到有关如何在Delphi中使用DataReader的信息。

我想知道我是否可以断开ADOQuery与DataSetProvider(以及链的其余部分),运行查询,获取RecordCount,然后只有在RecordCount合理的情况下才重新连接链。

我无法弄清楚如何禁用DataSetProvider,当我尝试禁用ClientDataSet时,无论如何都会出现内存错误。

1 个答案:

答案 0 :(得分:0)

我最终将ADOQuery.DataSetProvider设置为NIL,并将所有记录直接从ADOQuery卸载到本地内存驻留数据库表中。花了一段时间,但没有内存错误。

时,导致Out of Memory错误的相同数据在转换为StringList时只有4 MB。

相关问题