有一个 xml 格式的 500.000 条记录数据库,尝试在 xe5 Delphi 64 位应用程序 (ClientDataSet) 中使用。如果我完全阅读它需要超过 4 GB 的内存。尝试使用 fetchondemand=False 和 PacketRecords=5000 属性(如文档所述),但它根本不起作用。应用程序对这些更改完全不敏感。有人可以帮助我吗?
问问题
722 次
1 回答
1
感谢所有阅读我的问题并试图帮助我的人。最后找到了一个demo,里面的机制解释的很清楚。解决方案非常简单:当要使用 fetchondemand 时,必须涉及两个数据集,以限制使用的内存。具有默认设置的第一个数据集(True 和 -1))指向 XML 数据库,数据提供者指向它,第二个数据集(其 fetchondemand 属性设置为 False,DataPackets 设置为所需的记录号获取一个数据包)指向数据提供者,并且数据感知网格仅指向第二个数据集。程序员必须使用 GetNextPacket 过程编写分页机制,以便用网格解析整个 XML 数据库。
很抱歉用这么愚蠢的问题打扰你,希望答案能帮助所有像我一样不清楚这个机制的人。
再次感谢你,
拉斯洛
于 2014-02-13T14:58:53.870 回答