ColdFusion的查询结果集同数组和结构相关。你可以把它们概念化为一个网格(grid),它的顶行带有列的名称,行号在第一列里依次向下排列,数据值被填充在网格的其他部分里。你可以使用ColdFusion用来创建查询结果集的CFML函数来定义你自己的结果集、对它命名、设置列的名称、添加行,并用数据来填充它。
但是这些函数很难使用,所以一些聪明的开发人员将这个结果集创建逻辑封装进了一个免费的自定义CF标签里,叫做<cf_querysim>,你可以在这里下载。Listing A包含了一个使用普通标签来构造模拟查询结果集(也就是我后面要用到的querysim)的例子。
正如你所看到的,其句法非常简单。在标签集里,第一行用来设置查询的名称,第二行以逗号分隔列表的形式给列命名。后面的几行为(网格的)每一行提供数据值,每个单元格(cell)都用管线标志分隔开。如果你只定义名称和列,那么最终得到的会是一个空的结果集。
有一个函数对于大多数Web应用程序来说是很常见的,它允许用户通过HTML的表单来添加、编辑和删除数据库的数据。你可以使用代码来创建这样的表单,就像Listing B的一样,它会在数据库里查找匹配的用户,如果没有匹配的记录,就会输出空值或者缺省的值。
即使是在这个只有三个字段的简单例子里,你也可以看到有很多条件检查。在你处理新的记录或者空的记录时,如果你想要为一些字段定义缺省的值,情况就会更复杂。
下面的内容对querysim来说是个好消息,它会让你清除掉所有的条件逻辑,这正如你会在Listing C里看到的那样。这一次,我只需要一个条件检查,就在<cf_querysim>标签之前。如果数据库里没有匹配的记录,我就会用缺省的值创建一个结果集。这个表单本身不需要任何条件逻辑来检测空的结果集和显示缺省的数据。