我已经被展示了如何使用Application.cfc而不是Application.cfm来做这件事--这很好,我喜欢学习新的东西。然而,在我做了更改之后,我不知道如何让DSN正常工作。在我刚刚在Application.cfm文件中使用了一个设置的DSN之前。
<cfparam name="DSN" default="">
<cfset DSN = "krl" />并把它叫到这里:
<CFQUERY NAME="Inital" DATASOURCE="#DSN#">
SELECT Website_Name
FROM InitalizationData
</CFQUERY>现在将其设置为:
component {
this.name = "app";
this.Sessionmanagement = true;
this.datasource = "krl";
public void function onSessionStart() {
// initialize cart
session.cart = [];
}
}我如何在我的查询中调用它?
发布于 2016-08-18 03:26:20
在Application.cfc中,您通常会添加一个函数onApplicationStart()。然后,在该函数内部定义
application.dsn = "foo";
并像这样引用它:
<cfquery name="test" datasource="#application.dsn#">
在CFC中将变量定义为this.datasource时,this作用域仅存在于该CFC的上下文中。它不能从外部访问。
发布于 2016-08-22 19:40:39
我可以在任何CFM页面中使用this.datasource。示例:
<cfinsert tableName="#variables.type#s" dataSource="#this.datasource#">Application.cfc看起来像这样:
<cfcomponent
displayname="Application"
output="true"
hint="Handle the application.">
<!--- Set up the application. --->
<cfset THIS.Name = "#cgi.server_name#" />
<cfset THIS.SessionManagement = true />
<cfset THIS.ApplicationTimeout = CreateTimeSpan( 1, 0, 0, 0 ) />
<cfset THIS.SessionTimeout = CreateTimeSpan( 0, 0, 30, 0 ) />
<cfset THIS.SetClientCookies = true />
<!--- FOR THE DATASOURCE --->
<cfset this.datasource = "MyDSN" />
...
</cfcomponent>但是,在常规标记中,如果数据源在THIS作用域中,则根本不需要指定数据源:
<cfquery name="get">
SELECT id
FROM restaurants
WHERE email = '#something#'
UNION
SELECT id
FROM individuals
WHERE email = '#something#'
</cfquery>https://stackoverflow.com/questions/39002299
复制相似问题