当前位置: 首页 > 编程笔记 >

coldfusion Query

王渊
2023-03-14
本文向大家介绍coldfusion Query,包括了coldfusion Query的使用技巧和注意事项,需要的朋友参考一下

示例

考虑表dbo.state_zip,其中包含列city,statecode并且zipcode,有超过80,000条记录。

参数

属性 需要 类型 默认 描述
询问 真正
查询对象的变量名。
起始行 数字
查询对象的起始行索引。
row 数字
查询对象的结束行索引。

对记录进行分组的查询列名称。

查询示例

<cfquery name="geo" datasource="reotrans-dev">
    SELECT city, stateCode, zipCode
    FROM dbo.state_zip
</cfquery>

标签语法

使用查询对象geo作为的来源cfloop。由于该表dbo.state_zip有很多记录,因此生成的HTML将花费一些时间。本示例仅显示前20条记录的HTML值。

<cfoutput>
    <ul>
    <cfloop query="geo">
        <!--- Scope the column names with the query name. --->
        <li>#geo.city# | #geo.stateCode# | #geo.zipCode#</li>
    </cfloop>
    </ul>
</cfoutput>

生成的HTML

<ul>
    <li>100 PALMS | CA | 92274</li>
    <li>1000 PALMS | CA | 92276</li>
    <li>12 MILE | IN | 46988</li>
    <li>1ST NATIONAL BANK OF OMAHA | NE | 68197</li>
    <li>29 PALMS | CA | 92277</li>
    <li>29 PALMS | CA | 92278</li>
    <li>3 STATE FARM PLAZA | IL | 61710</li>
    <li>3 STATE FARM PLAZA | IL | 61791</li>
    <li>30TH STREET | PA | 19104</li>
    <li>3M CORP | MN | 55144</li>
    <li>65TH INFANTRY | PR | 00923</li>
    <li>65TH INFANTRY | PR | 00924</li>
    <li>65TH INFANTRY | PR | 00929</li>
    <li>65TH INFANTRY | PR | 00936</li>
    <li>7 CORNERS | VA | 22044</li>
    <li>88 | KY | 42130</li>
    <li>9 MILE POINT | LA | 70094</li>
    <li>A A R P INS | PA | 19187</li>    
    <li>A A R P PHARMACY | CT | 06167</li>
    <li>A H MCCOY FEDERAL BLDG | MS | 39269</li>
</ul>

将输出限制为特定行

要将查询的输出限制为特定的行范围,请指定startrow和endrow。

<cfloop query="geo" startrow="100" endrow="150">
    <li>#geo.city# | #geo.stateCode# | #geo.zipCode#</li>
</cfloop>

分组输出

在示例数据中,相对于与每个州相关联的多个城市,同一州多次列出。您还可以看到多次列出与每个城市关联的多个邮政编码相关的同一城市。

让我们先按状态对输出进行分组。注意第二个cfloop包裹内容的实例,它将在stateCode分组的内容下输出。

<cfoutput>
    <ul>
    <cfloop query="geo" group="stateCode">
        <!--- Scope the column names with the query name. --->
        <li>#geo.stateCode#
            <ul>
                <cfloop>
                    <li>#geo.city# | #geo.zipCode#</li>
                </cfloop>
            </ul>
        </li>
    </cfloop>
    </ul>
</cfoutput>

从一个分组cfloop标签生成的HTML(摘录)。

<ul>
    <li>AK
        <ul>
            <li>KONGIGANAK | 99545</li>
            <li>ADAK | 99546</li>
            <li>ATKA | 99547</li>
            <!-- etc. -->
        </ul>
    </li>
    <li>AL
        <ul>
            <li>ALEX CITY | 35010</li>
            <li>ALEXANDER CITY | 35010</li>
            <li>ALEX CITY | 35011</li>
            <!-- etc. -->
        </ul>
    </li>
    <!-- etc. -->
</ul>

最后,让我们按分组输出stateCode,然后按分组,city以查看zipCode每个城市的所有条目。请注意,第二个cfloop分组了city,第三个分组了cfloop以输出zipCode数据。

<cfoutput>
    <ul>
    <cfloop query="geo" group="stateCode">
        <li>#geo.stateCode#
            <ul>
            <cfloop group="city">
                <li>#geo.city#
                    <ul>
                        <cfloop>
                            <li>#geo.zipCode#</li>
                        </cfloop>
                    </ul>
                </li>
            </cfloop>
            </ul>
        </li>
    </cfloop>
    </ul>
</cfoutput>

从两个分组cfloop标签生成的HTML(摘录)。

<ul>
    <li>AK
        <ul>
            <li>ADAK
                <ul>
                    <li>99546</li>
                    <li>99571</li>
                </ul>
            </li>
            <li>AKHIOK
                <ul>
                    <li>99615</li>
                </ul>
            </li>
            <!--- etc. --->
            <li>BARROW
                <ul>
                    <li>99723</li>
                    <li>99759</li>
                    <li>99789</li>
                    <li>99791</li>
                </ul>
            </li>
            <!--- etc. --->
        </ul>
    </li>
    <!--- stateCodes etc. --->
</ul>

脚本

尽管当前为ColdFusion 6(MX)

<cfscript>
    for (x = 1; x LTE geo.recordcount; x = x + 1) {
        writeOutput( '<li>' & geo.city[x] & ' | ' & 
            geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
    }
</cfscript>

尽管当前为ColdFusion 8

<cfscript>
    for (x = 1; x <= geo.recordcount; x++) {
        writeOutput( '<li>' & geo.city[x] & ' | ' & 
            geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
    }
</cfscript>

尽管当前为ColdFusion 10

使用FOR IN语法,x是查询行对象,而不是行索引。

<cfscript>
    for (x in geo) {
        writeOutput( '<li>' &x.city& ' | ' & 
           x.stateCode& ' | ' &x.zipCode& '</li>');
    }
</cfscript>

尽管当前为ColdFusion 11

ColdFusion 11允许将大多数标签写为cfscript。

<cfscript>
    cfloop(query: geo, startrow: 1, endrow: 2) {
        writeOutput( '<li>' &geo.city& ' | ' & 
           geo.stateCode& ' | ' &geo.zipCode& '</li>');
    }
</cfscript>

用group。

<cfscript>
    cfloop(query: geo, group: 'city') {
        writeOutput( '<li>' &geo.city& '<ul>');
        cfloop() { // 没有参数,就像标记语法一样。
            writeOutput('<li>'  &geo.zipCode& '</li>');
        }
        writeOutput('</ul></li>');
    }
</cfscript>
           

 类似资料:

相关阅读

相关文章

相关问答