Die*_*ius 1 coldfusion cfquery coldfusion-11
我正在以谷歌更好的形式进行搜索,以便在coldfusion中对"查询"进行交流,因为我在公司工作的新人,我试图从CF获得更多
在这里我的尝试:
我的模特:
<cffunction hint="Foo" name="Foo" access="public" returntype="query">
<!--- Argumentos --->
<cfargument hint="Something" name="ArgComBus" type="string" required="no" default="">
<cfargument hint="Other thing" name="ArgPar" type="string" required="no" default="">
<cfscript>
queryService = new Query();
queryService.setSql("
SELECT
column1,
column2,
FROM
tab_bar
WHERE
1=1
#arguments.ArgComBus#
");
queryService.setDataSource(session.Dsn);
if(Len(Trim(arguments.ArgPar))){
Evaluate(arguments.ArgPar);
}
queryResult = queryService.execute();
qBus = queryResult.getResult();
</cfscript>
<cfreturn qBus>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
我的剧本
<cfscript>
arrFoo = arrayNew(1);
qFoo = this.Foo(
ArgComBus = " AND column1 = #variables.bar# ");
// First Attempt - The each method was not found.
qFoo.each(function (foo) {
arrFoo.append(foo);
});
// Second Attempt - Variable QUERYEACH is undefined.
queryEach(qFoo, function (foo) {
arrFoo.append(foo);
});
writeDump(arrFoo);
</cfscript>
Run Code Online (Sandbox Code Playgroud)
我的服务器转储
InstallKit Native Windows
appserver Tomcat
productlevel Developer
productname ColdFusion Server
productversion 11,0,05,293506
rootdir C:\CFusion11\cfusion
Run Code Online (Sandbox Code Playgroud)
我甚至使用getMetaData()我的查询变量qFoo和返回的数组...所以当我尝试使用类似的东西(试图在查询中转换数组?)
cfQuery = createObject("java", "coldfusion.sql.QueryTable").init(qFoo);
Run Code Online (Sandbox Code Playgroud)
.each()和queryEach()相同的答案...我甚至尝试使用arrayEach()但返回对象是coldfusion.sql.QueryTable而不是数组
您正在运行ColdFusion 11.
queryEach()直到ColdFusion 2016才添加该功能:
最初我发布了each()Adobe ColdFusion 11中没有成员函数.Aquitaine在评论中指出它实际上是.我错误地引用了Each()适用于集合的Lucee函数.Each()与此问题相关的功能实际上是ArrayEach()标记功能的脚本版本.这在ColdFusion 11中可用(它实际上是在ColdFusion 10中添加的).对困惑感到抱歉.
文档可能有误.Each()除了在ColdFusion 2018下,我无法使该功能起作用.对于ColdFusion 11,我只能将它作为ArrayEach().
以下是有关如何在ColdFusion 11(借用cfdocs)中循环查询的几个示例:
// Define our query
platform = ["Adobe ColdFusion", "Railo", "Lucee"];
myQuery = queryNew(" ");
queryAddColumn(myQuery, "platform", "CF_SQL_VARCHAR", platform);
// By row index
for (i = 1; i <= myQuery.recordCount; i++) {
writeOutput("<li>#myQuery["platform"][i]#</li>");
}
// By query
for (row in myQuery) {
writeOutput("<li>#row.platform#</li>");
}
// By arrayeach
writeOutput("<h3>By arrayeach:</h3>");
function printArray(vendor, index)
{
writeOutput("<li>#vendor#</li>");
}
arrayEach(platform,printArray);
Run Code Online (Sandbox Code Playgroud)
我在TryCF.com上为你创建了一个要点,这样你就可以看到这个代码在运行中,如果你愿意,可以随意使用它.只需单击此处即可运行代码.