繁体   English   中英

数据集从另一个数据集中检索数据

[英]Dataset retrieving data from another dataset

我使用从基于文件的数据存储切换到基于数据库的应用程序。 它有大量的代码专门针对基于文件的系统编写的。 为了进行切换,我正在实现与旧系统一样的功能,然后计划在新代码中更优化地使用数据库。

一个问题是基于文件的系统经常读取单个记录,然后重复读取它们以获取报告。 这已经成为对数据库的大量查询,这很慢。

我一直试图充实的想法是使用两个数据集。 一个数据集可检索整个表,另一个数据集可查询第一个,从而减少了与数据库服务器的通信开销。

我试图查看TADODataSetDataSource属性,但是数据集似乎仍然需要连接,并且它直接询问数据库是否分配了Connection

我宁愿将结果保存到另一个数据集中而不是浏览第一个数据集中的原因,是因为已经实现了用于模拟旧系统的大量逻辑。 此逻辑基于具有仅包含通过旧接口查询的结果的数据集。

该功能仅需支持读取数据,而无需将其写回。

如何使用一个数据集为另一个数据集提供值?

我正在使用Delphi 2007和MSSQL。

您可以使用ClientDataSet / DataSetProvider对从现有的DataSet中获取数据。 您可以对源数据集使用筛选器,对ClientDataSet和提供者事件使用筛选器以仅将数据集修剪为感兴趣的记录。

我已经在几个迁移项目中成功使用了该技术,并缓解了类似的情况,在该情况下,数千次查询一个旧的SQL Server 7数据库以痛苦的性能成本检索单个记录。 当时只查询一次,然后将单个记录提取到客户端数据集,这不仅是一种优雅的解决方案,而且对特定应用程序的性能也有很大的提升:最大的例子是将一个8小时的过程减少到15分钟。那个时候可怜的用户爱我。

ClientDataSet只是一个TDataSet,您可以将其无缝集成到现有代码和UI中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM