**
数据库查询
**
一、文章说明
FDB数据库实现了对数据时间、空间、属性一体化的管理,SDK提供了查询过滤器接口IQueryFilter,可实现属性、空间、时间查询。本节我们主要讲述数据库的属性查询。其空间查询及时态数据库将分别单独讲述。
二、原理
ITable通过Search方法,传入查询条件,返回符合查询条件的游标对象IFdeCursor。通过NextRow()可得到游标指向的一条记录,通过循环可以将查询到的所有记录返回。
ITable::Search(IQueryFilter Filter, VARIANT_BOOL ReuseRow ),其中, Filter为查询条件,ReuseRow表示是否重用Cursor::NextRow()返回的Row,不重用时,Cursor::GetNextRow 返回的Row 每次都是 new 出来的。该模式频繁的new会比重用时占用内存,但支持查询与使用不同步的情境(即可以先把查询结果保存起来,待在需要的地方再进行遍历访问)。重用时,Cursor::GetNextRow 返回的Row* 都指向同一个内存地址。该模式节约内存,但仅适用于即查即用的情境(即如果把查询结果保存进数组,待查询完后再遍历数组,数组里多条记录的内容都完全一样)。
IQueryFilter,查询过滤器,可设置查询条件,其方法AddSubField()是向过滤器中添加一个列名,设置需要返回的列,如果为空,则做全查询。查询条件通过WhereClause设置。其语法与标准的SQL语句一致。