FireDAC 提供了对本地内存表的数据,使用 SQL SELECT 语句进行查询的功能。
不管是 FdQuery 还是 TClientDataSet,在其打开以后,数据都在本地内存,所以称之为本地内存表。有时候我们需要对本地内存表的数据进行查询,不是使用 DataSet 的 Find, Locate, Filter 等功能,而是使用 SELECT 语句,因为这样可以实现对多个表的联合复杂查询。FireDAC 提供了这样的功能。
实现方法:
1. 假设我们有一个本地内存表 FdQuery2,它的数据来自远程数据库服务器;
2. 拖一个 TFdConnection 过来,命名为:FDConnectionSQLite,双击它,弹出来它的参数设置界面,设置其驱动(Driver ID)为 SQLite;其它参数都不用设置。
3. 拖一个 TFdLocalSQL 过来,默认名字:FdLocalSQL1, 设置其 Connection 为 FDConnectionSQLite;
4. 拖一个 TFdQuery 过来,命名为:FdqLocal;
5. 选择 FdLocalSQL1 的属性面板里面的 DataSets 属性,弹出一个框。右键菜单,选择【Add】,增加一条,选中这一条,在属性面板里面设置:A. DataSet 属性,选择前面的 FdQuery2;B. Name 属性,命名为【A】;这个【A】就是本地SQL 语句里面的表的名字。
然后,使用以下代码就能对 FdQuery2 里面的数据执行 Select 语句:
FdQuery2.Open();
FDLocalSQL1.Active := True;
FdqLocal.SQL.Text := 'select * from A where ABC="afsafs"';
FdqLocal.Open();
经过测试,上述代码执行正确。如果绑定一个 DBGrid 和一个 DataSource 到 FdqLocal 上面,就能看到上述 SQL 语句执行的数据集结果。

本文介绍了如何利用FireDAC组件在本地内存表上执行SQL SELECT语句,涉及步骤包括设置TFdConnection、TFdLocalSQL、TFdQuery等组件,以及如何通过TFdLocalSQL的DataSets属性将远程数据表映射为本地表,并通过TFdQuery进行复杂查询。测试显示代码执行正确,结果可绑定到DBGrid展示。

被折叠的 条评论
为什么被折叠?



