我想在ColdFusion Query对象中获取特定行而不循环它.
我想做这样的事情:
<cfquery name="QueryName" datasource="ds">
SELECT *
FROM tablename
</cfquery>
<cfset x = QueryName[5]>
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误,说该查询不能被"5"索引.我知道这个查询中有超过5条记录.
我正在尝试将ColdFusion查询列转换为列表,这样做的最佳方法是什么?
我认为有一个内置函数,允许人们轻松地将查询列转换为列表,如果有的话?
我正在ColdFusion 9.01脚本中编写一个查询,并且无法理解为什么它没有缓存结果.使用CFML标记语法执行时,相同的查询将缓存.
SQL,数据源,用户名,密码不会改变.我在实例化之后转储了cfscript查询对象,并验证了在init期间正确接收了cachedWithin参数.我很难过.
不会缓存的CFScript版本
var Q = new Query(
SQL="SELECT * FROM TABLE"
,cachedwithin=createTimeSpan(0,0,60,0)
).execute().getResult();
Run Code Online (Sandbox Code Playgroud)
将缓存的CFML标记版本
<cfquery name="local.q">SELECT * FROM TABLE</cfquery>
Run Code Online (Sandbox Code Playgroud)
感谢您的时间和帮助.
亚伦
这不会在ColdFusion 11中崩溃,但会在ColdFusion 2016中崩溃
SELECT *
FROM dbo.Roles WITH (NOLOCK)
WHERE Code IS NOT NULL
AND Active = 1
AND RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK)) -- It's ok to look at termed employees
Run Code Online (Sandbox Code Playgroud)
这两种方法都可以
SELECT *
FROM dbo.Roles WITH (NOLOCK)
WHERE Code IS NOT NULL
AND Active = 1
AND RoleID IN (SELECT RoleID FROM dbo.Emp WITH (NOLOCK))
Run Code Online (Sandbox Code Playgroud)
是否有恢复原始行为的设置?
UPDATE
我以为我有一个最小的问题例子,但我没有.这是完整的查询
SELECT '<ul>' + STUFF (
(
SELECT MIN(Role) AS "li/code", Code AS "li/span/b", 'Unsorted' AS "li/span/var"
FROM …Run Code Online (Sandbox Code Playgroud) 我正在努力成为一名优秀的CF Web开发人员,并使用<cfqueryparam>所有FORM或URL元素来实现我的SQL查询.
在这种情况下,我试图允许用户动态控制ORDER BY子句.
<cfquery datasource="MyDSN" name="qIncidents">
SELECT IncidentID, AnimalID, IntakeDate, DxDate, OutcomeDate
FROM Incidents
WHERE ShelterID = <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.ShelterID#">
ORDER BY <cfqueryparam cfsqltype="cf_sql_varchar" value="#SortBy#">
</cfquery>
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到以下错误:
由ORDER BY编号1标识的SELECT项包含一个变量,作为标识列位置的表达式的一部分.只有在引用列名的表达式进行排序时,才允许使用变量.
有关如何安全地做到这一点的任何建议?
当我使用ColdFusion 8中的cfquery标签从MySQL表中选择数据时,即使我将它们存储在数据库表中的camelCase中,列名也都会转换为大写.有没有办法让ColdFusion尊重列名的情况?
我问的原因是因为我将查询结果作为JSON对象返回,我不想在JavaScript端使用大写属性名称,因为我保留了常量的命名约定.
我主要CFQUERYPARAM用来防止SQL注入.由于查询查询(QoQ)不接触数据库,是否有任何逻辑上的理由在其中使用CFQUERYPARAM?我知道这不匹配的值cfsqltype,并maxlength会抛出异常,但是,这些值应该已经在此之前进行验证,并显示(从UX观点)友好的信息.
今天在修复一些现有代码中的错误时,我发现了一个奇怪的错误.
分支目标偏移量太大
搜索后我发现它与Java字节码转换有关.以下是我发现的链接:
在我的情况下,cftransaction包含大约870个语句,它工作正常.但我需要在此事务中再添加2个查询.现在,当我在cftransaction中添加一行代码时,我收到此错误.目前我无法将任何现有的cfquery移出cftransaction.
以下是代码的整体结构:
<cftransaction action="begin">
<cfif URL.action eq 'add'>
Around 200 lines of queries/statements
<cfelseif URL.action eq 'edit'>
Around 200 lines of queries/statements
</cfif>
<cfif URL.action eq 'add' or URL.action 'edit'>
Around 450 lines of queries/statements
</cfif>
</cftransaction>
Run Code Online (Sandbox Code Playgroud)
有没有解决此问题的解决方法?
我正在使用HQL查询来获取一堆状态对象,如下所示:
<cfquery name="LOCAL.qStates" dbtype="hql">
from States where countryID = #ARGUMENTS.countryID#
order by name asc
</cfquery>
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我很好,我想使用cfqueryparam,理想情况如下:
<cfquery name="LOCAL.qStates" dbtype="hql">
from States
where countryID = <cfqueryparam cfsqltype="cf_sql_integer" value="#ARGUMENTS.countryID#" />
order by name asc
</cfquery>
Run Code Online (Sandbox Code Playgroud)
但这会引发错误:
[empty string] java.lang.NullPointerException at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:353) at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:323) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:98) at coldfusion.orm.hibernate.HibernatePersistenceManager._executeHQL(HibernatePersistenceManager.java:822) at coldfusion.orm.hibernate.HibernatePersistenceManager.executeHQL(HibernatePersistenceManager.java:751) at ....
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何解决这个问题,并使用cfqueryparam与cfqueryHQL查询?
提前致谢!
当我使用CFINSERT表单时,数据被插入到我的数据库中,因为字段名称与列名称匹配.
我的问题:如何使用CFINSERT获取我刚刚添加的行的主键?
我知道我不能使用类似于标准的"Result ='variable'",cfquery那么获得主键的最佳方法是什么?
如果我在我的cfinsert之后直接运行以下查询,它应该返回以前的PK:
<cfquery name="getID" datasource="#mydsn#" result="#result#">
select Max(id) as NewID from myTablename;
</cfquery>
Run Code Online (Sandbox Code Playgroud)
这是完成我想要做的最好的方法吗?
cfquery ×10
coldfusion ×10
cfqueryparam ×2
t-sql ×2
cfml ×1
coldfusion-9 ×1
hibernate ×1
hql ×1
primary-key ×1
sql ×1
sql-server ×1