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