如何在不是来自数据库的数据集上执行SQL语句?

Jer*_*dge 2 delphi dataset delphi-xe2

假设我有一个应用程序从服务器获取代表数据集的自定义XML数据包.然后,假设我希望通过数据集对该数据执行SQL语句.我可以用它做什么?我不需要知道代码,但只需要使用什么来实现这一点,并对如何进行一般性解释.

例如,我可以从服务器获取XML格式的客户列表.然后,我可以使用任何第三方解析器将该XML数据转储到某个客户端数据集中.然后,对该数据集执行查询,例如,select * from customers where ZipCode = '12345'不再从服务器获取此数据.

XML不是唯一的限制,这只是一个例子.我可能想对从INI文件加载的某些应用程序设置执行相同的操作.无论哪种方式,概念是数据的原始来源是未知的.

数据集是将其临时数据存储在内存中还是存储在磁盘上并不重要,但如果它可以将其保存在磁盘中则非常好.

小智 8

TXQuery(http://code.google.com/p/txquery/)是一个组件,它提供了一个本地SQL引擎,用于对一个或多个TDataSet执行SQL查询.我遇到的唯一问题是通过连接多个表(TDataSets)的查询的TDBGrid更新数据 - 特别是哪个表正在更新.

AnyDac v6(现在的FireDac)也有一个本地SQL引擎. http://www.da-soft.com/anydac/docu/frames.html?frmname=topic&frmfile=Local_SQL.html

编辑:对于您的问题中的示例SQL,因为它只涉及单个表,所以只需对数据集上的过滤器执行此操作.例如

ADataSet.Filtered := False;
ADataSet.Filter := 'ZipCode=' + QuotedStr('12345');
ADataSet.Filtered := True;
Run Code Online (Sandbox Code Playgroud)