我有几个查询,我使用cfquery标记的cachedwithin ="#CreateTimespan(...)#"属性进行缓存.有时我需要清除缓存(或者只是重新执行查询以获取新的缓存副本).从历史上看,我已经完成了两件事之一 -
这些选项都不是很好,特别是在生产中.我不是要求我如何以编程方式使缓存过期(虽然,这会很好!),但更简单 - 如何清除服务器上的缓存查询而不必诉诸上述两种方法之一?我很高兴听到在服务器范围或应用程序范围内工作的方法,甚至是如何使特定的缓存查询过期.谢谢!
我是SQL Fiddle的作者.这些知识可能有助于构建这个问题:
我正在尝试编写一些Groovy代码,它将在我的数据库中执行任意查询/ DML代码.基于我对Groovy Sql API的阅读,所有这些函数都需要非常特别的东西.例如,"eachRow"期望返回结果集; 如果没有返回(例如,在UPDATE语句的情况下),那么使用它将引发错误.我可以用任何类型的语句调用"execute",但是在使用它时我无法获取SELECT语句的结果集(这绝对是一个要求).
在这一点上,我想我可能不得不放弃Groovy的Sql库,转而采用一些低级的JDBC实现.我想这可能是一种耻辱,但如果有必要,我愿意去那里.不过,我非常希望尽可能保持Groovy-esqe.我该怎么做呢?
所以,鉴于我有一个这个组件的实例:
foo.cfc
<cfcomponent>
<cffunction name="locateMe">
<cfreturn "I don't know where I live!">
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
而且,这个其他组件,fooParent.cfc:
<cfcomponent>
<cfset this.foo = createObject("component", "foo")>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
假设我用几种不同的方式创建"foo"的实例:
<cfset myStruct = {}>
<cfset myStruct.foo = createObject("component", "foo")>
<cfset myFoo = createObject("component", "foo")>
<cfset myFooParent = createObject("component", "fooParent")>
<cfoutput>
#myStruct.foo.locateMe()#<br>
#myFoo.locateMe()#<br>
#myFooParent.foo.locateMe()#<br>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
正如所料,这输出:
I don't know where I live!
I don't know where I live!
I don't know where I live!
Run Code Online (Sandbox Code Playgroud)
我想知道的是,我可以在foo.cfc中做些什么来告诉我关于它被调用的上下文的内容(任何事情!)?因为一切最终都存在于(至少)某种范围内,并且所有范围都是一种对象,我所说的是我真的想从某个给定的实例化对象中确定包含对象的某种方式.最后,从上面的示例代码片段构建foo.cfc的某种方式,以便这样的东西可以作为我的输出:
I live within a "class coldfusion.runtime.Struct" instance!
I live within a …
Run Code Online (Sandbox Code Playgroud) 我有一些在客户端(浏览器)和服务器上运行的JavaScript函数(在Java Rhino上下文中).这些是小函数 - 基本上很少有验证器,它们定义良好且不依赖于全局或闭包 - 自包含和可移植.
这是一个例子:
function validPhoneFormat(fullObject, value, params, property) {
var phonePattern = /^\+?([0-9\- \(\)])*$/;
if (value && value.length && !phonePattern.test(value))
return [ {"policyRequirement": "VALID_PHONE_FORMAT"}];
else
return [];
}
Run Code Online (Sandbox Code Playgroud)
为了保持DRY,我的服务器代码获取每个函数的句柄并调用它们上的toString(),将它们作为JSON对象的一部分返回给浏览器.像这样的东西:
{ "name" : "phoneNumber",
"policies" : [
{ "policyFunction" : "\nfunction validPhoneFormat(fullObject, value, params, property) {\n var phonePattern = /^\\+?([0-9\\- \\(\\)])*$/;\n if (value && value.length && !phonePattern.test(value)) {\n return [{\"policyRequirement\":\"VALID_PHONE_FORMAT\"}];\n } else {\n return [];\n }\n}\n"
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后我的浏览器JS代码接受此响应,并在该上下文中创建此函数的实例,如下所示:
eval("var policyFunction = " + this.policies[j].policyFunction);
policyFailures …
Run Code Online (Sandbox Code Playgroud) 我的老板要我使用cfscript而不是标签进行数据库交互.有人知道任何好的教程吗?我购买了Adobe ColdFusion应用程序开发书,第2卷.但它在脚本编写方面没有太多内容.我做谷歌并找到了这个网站,但它没有解释太多.
有没有人知道有关访问CFScript数据库的任何好教程?
基本上我必须将以下内容转换为使用CFScript:
<cfquery name="drafts" datasource="ICEchat">
SELECT * from Messages where IsTemp=1 and LinkA=#FORM.LinkA# and LinkB=#FORM.LinkA#
</cfquery>
<cfif drafts.recordcount GT '0'>
<cfquery name="Attachments" datasource="ICEchat">
SELECT * FROM Attachments where id=2
</cfquery>
{ Message:"<cfoutput query="drafts">#Message#</cfoutput>", Attachments:[<cfoutput query="attachments">
"#url#"<cfif attachments.currentRow LT attachments.recordcount>,</cfif>
</cfoutput>]}
<cfelse>
<cfquery name="addrecord" datasource="ICEchat">
INSERT INTO Messages
VALUES(1,1,' ',1)
</cfquery>
{ Message:"NA", Attachments:[]}
</cfif>
Run Code Online (Sandbox Code Playgroud) 我在Adobe的文档中看到了有关行调试器的几个参考.看这里,例如:
我看到了我需要提出的各种与Eclipse相关的设置.例如(从上面):
您可以通过选择Window> Preferences> ColdFusion> RDS Configuration,然后单击Test Debugger来确定是否在Eclipse中正确配置了Debugger服务器.
但是,我没有提到我必须做什么才能配置我的eclipse安装以获得此功能.我假设我需要安装一个eclipse插件.我希望当他们简单地说"eclipse"时,他们实际上并没有谈论CFBuilder.我应该指出,我正在使用带有cfeclipse插件的vanilla eclipse (而不是CFBuilder).
从CFEclipse网站,我看到:
调试
Adobe发布了ColdFusion 8 Extensions for Eclipse,其中包括一个步调试器和RDS工具.Adobe不再支持此功能,但仍可在最新的CFEclipse版本中使用.FusionDebug是Integral提供的商用步调试器.
这真的是真的,Adobe发布了CF8和eclipse的免费调试扩展,但是当他们去CF9时却打破了它(并没有提供免费的替代品)?在CF9中真的没有免费的线路调试方法吗?
假设是这种情况....是否有一个免费的线路调试选项Railo?CF 10怎么样?
我一直在尝试使用Coldfusion将XML作为制表符分隔文件添加到文本文件中.我想知道是否有人可以帮我解决这个问题.
我的XML可以是具有多个子节点的多个节点.我可以计算出维护每个子节点的选项卡数量然后将其恢复到起点的逻辑.
有没有我不知道的特定递归算法?
xml是这样的 -
<?xml version="1.0" encoding="UTF-8"?>
<I BMSMETA_AUTOMETASET_4_OPTIONS="Personnel"
id="b02bfa5f-f2d0-45ac-99e0-9e4e12416db1">
<I BMSMETA_AUTOMETASET_4_OPTIONS="Ranks"
id="c25d4732-862b-4dc4-835e-eb167f63a114">
<I BMSMETA_AUTOMETASET_4_OPTIONS="Army"
id="7a54176d-38f9-4753-bb93-60649e70ddb1">
<I BMSMETA_AUTOMETASET_4_OPTIONS="Field Marshall (Fd Marshall) (FM)"
id="5d311b9d-8d6e-4fa8-8933-a643bf55143d" />
<I BMSMETA_AUTOMETASET_4_OPTIONS="General (Gen)"
id="56d3aae4-7da9-4940-9692-e1ad90584127" />
<I BMSMETA_AUTOMETASET_4_OPTIONS="Lieutenant General (Lt Gen)"
id="0f1bb73b-39ae-4920-9d23-2c92d543ef37" />
<I BMSMETA_AUTOMETASET_4_OPTIONS="Major General (Maj Gen)"
id="9f269157-fde9-4ea4-ae1e-65344d56388e" />
<I BMSMETA_AUTOMETASET_4_OPTIONS="Brigadier (Brig)"
id="33e15bd2-aa5e-4a99-8096-821568bf7156" />
<I BMSMETA_AUTOMETASET_4_OPTIONS="Colonel (Col )"
id="fa38285d-2319-4e43-9207-3c4080497118" />
<I BMSMETA_AUTOMETASET_4_OPTIONS="Lieutenant Colonel (Lt Col) (CO)"
id="9fab6b6a-c4b1-4b5d-a051-8c22260f3225" />
<I BMSMETA_AUTOMETASET_4_OPTIONS="Major (Maj) (OC)"
id="9c232a00-1e54-427f-9fdf-73aa50f4c49e" />
<I BMSMETA_AUTOMETASET_4_OPTIONS="Captain (Capt) (SO3)"
id="18043ea4-d9cd-41cd-9a5c-851de350b397" />
<I BMSMETA_AUTOMETASET_4_OPTIONS="Lieutenant (Lt)"
id="9dfc1631-e49d-48e7-ad47-7ce41da36cdf" /> …
Run Code Online (Sandbox Code Playgroud) 这是我想阻止在我的服务器上运行的那种查询的示例:
begin
While True
LOOP
dbms_output.put_line('tst');
END LOOP;
end
Run Code Online (Sandbox Code Playgroud)
此查询(或其他类似的查询)可能通过Oracle JDBC瘦驱动程序访问我的Oracle服务器.我愿意阻止此查询在JDBC配置级别,数据库服务器配置级别或通过架构中的用户权限运行.我希望用户能够继续运行正常的select/insert/update/delete查询.老实说,如果没有PL/SQL类型命令可用,我会很高兴,而只是标准SQL.
更新
我还要提一下,我希望用户能够继续在SQL查询中使用标准函数.我真的不希望他们做任何看起来像程序编程的事情(并且不得不担心这些事情的陷阱,如上所示).
如果已经回答,我会提前道歉.
我的目标是创建一个分页方案,该方案将变量发送到ColdFusion函数中的查询,该函数抓取X个元素并在我的网页上显示这些记录而不刷新它.因此,为了测试抓取HTML内容并将其显示到屏幕而不刷新的基本功能,我尝试对ColdFusion组件执行简单的AJAX调用,让它返回带有HTML内容的变量,并显示格式化的HTML在我的网页上的div标签内.这是基于我在网络上看到的前一个例子,它使用了cfajaxproxy,虽然这可能是我的问题,但我很惊讶它根本就没有做到它应该做的事情.
我有一个名为testGeneration.cfm的文件,这里是代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<!-- call the jQuery library -->
<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#loadLink").click(function(e) {
e.preventDefault();
$.ajax({
type: "GET",
url: "generateInfo.cfc?method=createHTML",
dataType: "html",
success: function(message) {
$("#mydiv").html(message);
}
});
});
});
</script>
</head>
<body>
<a href="" id="loadLink">Load Query</a>
<!-- empty div to load dynamcically generated table into -->
<div id="mydiv"></div>
</body>
Run Code Online (Sandbox Code Playgroud)
如您所见,它使用CreateHTML方法调用组件GenerateInfo.以下是generateInfo.cfc的代码:
<cfcomponent displayname="Generate HTML" output="false">
<cffunction name="createHTML" displayname="Create HTML" description="Creates HTML to output with jQuery." access="remote" …
Run Code Online (Sandbox Code Playgroud)