-->ColdFusion 初级教程-->显示查询结果

ColdFusion

后页 前页
目录
北极星书库
显示查询结果

一旦你在应用程序文件中建立了一个查询,你就可以在其他CFM文件中引用该查询的结果。查询结果可以用来动态地产生HTML网页。


当你学习使用CFML标签时,要记住你也可以在程序中使用HTML标签和文本。在你使用HTML标签和文本的地方,ColdFusion简单地将标签和文本直接传递给客户流览器。输出查询结果的最灵活的方式是使用CFOUTPUT标签。CFOUTPUT标签可以对某个特定的查询进行输出,也可以输出多个查询的内容。一个CFOUTPUT标签中可以包含:


·纯文本


·HTML标签


·引用查询字段


·引用动态参数,如Form字段


·函数


基本的输出代码有如下的语法:


<CFOUTPUT QUERY=" queryname" MAXROWS= n >


Literal text, HTML tags, and


dynamic field references (e.g., #FullName#)


</CFOUTPUT>


CFOUTPUT中的数据库字段名


有些数据库,如Microsoft Access,允许字段名中带有空格,例如”Region Name.”ColdFusionCFOUTPUT中不支持对这种字段的引用。要和ColdFusion兼容,应避免在表名和字段名中使用空格,这使应用程序对不同的数据库系统具有最大的兼容性。你可以用下划线作分隔符,如”Region_Name”


字段名必须以字母开头,且只能包含字母和数字。你 可以用SQL关键字AS为字段名起一个别名。例如,语句:


SELECT 401K AS FK FROM Employee_Withholding


CFQUERY中可以得到正确处理。


例子:CFOUTPUT


在下面的例子中,我们用CFOUTPUT标签显示查询EmployeeList的查询结果。选择显示的内容是每个员工的姓,名,和电话号码。在变量名中指定查询名是个很好的编程习惯。


下面给出程序的完整代码:


<!--- Query to select customers --->


<CFQUERY NAME="EmployeeList" DATASOURCE="CompanyDB">


SELECT *


FROM Employees


</CFQUERY>


<HTML>


<HEAD>


<TITLE>Employee List</TITLE>


</HEAD>


<BODY>


<H2>Employee List</H2>


<!--- Output section --->


<CFOUTPUT QUERY="EmployeeList">


<HR>


#EmployeeList.FirstName# #EmployeeList.LastName#


(Phone: #EmployeeList.PhoneNumber#) <BR>


</CFOUTPUT>


</BODY>


</HTML>


你可以直接通过URL来申请这个网页,如:


http://myserver/cfdocs/employeelist.cfm


或者通过超链接引用:


<A HREF=”myserver/cfdocs/employeelist.cfm">Employee List</A>


这个例子的输出结果的HTML代码类似于:


<HR>


Deborah Jones (Phone: 612-227-1019) <BR>


<HR>


John Smith (Phone: 507-452-7224) <BR>


<HR>


Frank Wilson (Phone: 612-831-9555) <BR>


嵌套CFOUTPUT和分组


你可以对CFOUTPUT进行嵌套,以实现查询结果的分组显示。分组的实现是通过指定CFOUTPUT标签的GROUP属性,然后将另一个CFOUTPUT嵌人前一个CFOUTPUT。内层CFOUTPUT上面和下面的内容用于给每一组显示一个标题和脚注信息。


例子:分组


下面的代码使用CFOUTPUTGROUP属性,根据”CourseLevel”的值将查询结果分组显示。ORDER BY关键字根据CourseLevel字段的值对查询结果进行排序。CFOUTPUT嵌套没有层数的限制,如果你想使用多级分组,你需要在SQL查询中设置多级排序(例如,”ORDER BY Region,State”)。


<CFQUERY NAME="Courses" DATASOURCE="CourseDB">


SELECT *


FROM CourseList


WHERE Department_ID = ?Form.Department#


ORDER BY CourseLevel


</CFQUERY>


<CFOUTPUT QUERY="Courses" GROUP="CourseLevel">


<H4>#CourseLevel#</H4>


<UL>


<CFOUTPUT>


<LI> #CourseNumber# - #CourseName#


</CFOUTPUT>


</UL>


</CFOUTPUT>


这个例子在流览器中显示的结果为:


Basic


100 - Physiology


Intermediate


510 - Neurobiology


500 - Plant Biology


Advanced


820 - Neurobiology


800 – Microbiology


CFQUERY 属性


执行每个CFQUERY时,有三个属性可以提供记录数信息。


记录数

记录数

描述

RecordCount

查询所返回的记录总数。

CurrentRow

CFOUTPUT正在处理的当前记录。

ColumnList

返回用逗号隔开的查询字段列表。


例子:查询字段


这个例子返回查询CustomerList的记录数和查询字段的列表:


<CFOUTPUT>


The search returned information


on #CustomerList.RecordCount# customers.<BR>


Columns queried were #CustomerList.ColumnList#.


</CFOUTPUT>


要显示每个记录的记录序号,可以用如下语法:


<CFOUTPUT QUERY="CustomerList">


#CurrentRow# - #FirstName# #LastName# <BR>


</CFOUTPUT>


返回记录集的一部分


对于较大的记录集,你也许希望只显示该记录集的一部分。用CFOUTPUT标签的STARTROWMAXROWS属性可以做到这一点。STARTROW指定记录集中第一条要返回的记录。MAXROWS指定了要返回的记录总数。


例子:记录集的一部分


这个例子显示查询EmployeeList的结果记录集中第1020条记录:


<CFOUTPUT QUERY="EmployeeList"


STARTROW="10" MAXROWS="20">


#FirstName# #LastName# #Phone# <BR>


</CFOUTPUT>


CFOUTPUT中使用参数


CFOUTPUT不仅仅用于显示查询到的数据。你也可以用CFOUTPUT显示Form变量,URL变量,CookieClient变量,Server变量,Session变量,Application变量,和CGI环境变量。引用这些变量时要注意使用正确的前缀,这样ColdFusion才能将这些变量与查询结果的字段名区分开。与查询字段一样,变量必须扩在井号中。对查询结果的每条记录,参数值都被显示一次。注意,若要显示井号本身,应用两个连续的井号表示一个井号。



后页
前页
目录
北极星书库