获取ColdFusion中查询或结构中的列数

时间:2011-03-17 16:18:31

标签: coldfusion

是否有任何权宜之计(最好没有循环)方法来获取查询结果中的列数?我正在处理一个使用数据集而不知道其详细信息的模块。

4 个答案:

答案 0 :(得分:16)

<cfoutput>
   #ListLen(YourQuery.ColumnList)#
</cfoutput>

答案 1 :(得分:2)

<cfquery name="myQuery" datasource="#dsn#">
SELECT * FROM myTable
</cfquery>

<cfoutput>#myQuery.columnList#</cfoutput>

答案 2 :(得分:0)

查询:

<cfquery name="qMyQuery" datasource="MyDatasource">
  SELECT *
  FROM myTable
</cfquery>

<cfscript>
  cols = qMyQuery.columnList;
  colCount = ListLen(cols);
</cfscript>

对于结构:

<cfset stStruct = {
  key1="Value1",
  key2="Value2",
  key3="Value3"
} />
<cfscript>
  cols = structKeyList(stStruct);
  colCount = structCount(stStruct);
</cfscript>

根据你可以做的事情,你可以做这样的事情:

<table>
  <thead>
    <tr>
      <cfloop list="#cols#" delimiters="," index="c"><th>#c#</th></cfloop>
    </tr>
  </thead>
  <tbody>
<!-- for structure -->
    <tr>
      <cfloop list="#cols#" delimiters="," index="c"><td>#stStruct[c]#</td></cfloop>
    </tr>
<!-- for query -->
    <cfoutput query="qMyQuery">
    <tr>
      <cfloop list="#cols#" delimiters="," index="c"><td>#qMyQuery[c][qMyQuery.currentRow]#</td></cfloop>
    </tr>
    </cfoutput>
  </tbody>
</table>

答案 3 :(得分:0)

在CF10或Railo 4中,您可以将Underscore.cfc's size function与数组,查询,对象或结构一起使用。例子:

_ = new Underscore();// instantiate the library

_.size([1, 2, 3]);// returns number of elements (3)
_.size(query);// returns number of rows
_.size(object);// returns number of keys
_.size({a: 1, b: 2});// returns number of keys (2)

虽然数组it simply delegates为本地arrayLen(),结构/对象为structCount(),查询为recordCount,但它是一种不错的速记方法。当您希望能够获得集合的大小而不管其类型时,它也很有用。

注意:我写了Underscore.cfc