Application.cfc 设置 DSN 并调用该 DSN
Application.cfc setting DSN and calling that DSN
有人向我展示了如何使用 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 = [];
}
}
如何在查询中调用它?
在Application.cfc
里面,你通常会添加一个函数onApplicationStart()
。然后,在该函数内部定义
application.dsn = "foo";
并像这样引用它:
<cfquery name="test" datasource="#application.dsn#">
当您在 CFC 中将变量定义为 this.datasource
时,this
作用域仅存在于该 CFC 的上下文中。它无法从外部访问。
我可以在任何 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>
但是在常规标签中,如果数据源在这个范围内,您根本不需要指定数据源:
<cfquery name="get">
SELECT id
FROM restaurants
WHERE email = '#something#'
UNION
SELECT id
FROM individuals
WHERE email = '#something#'
</cfquery>
有人向我展示了如何使用 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 = [];
}
}
如何在查询中调用它?
在Application.cfc
里面,你通常会添加一个函数onApplicationStart()
。然后,在该函数内部定义
application.dsn = "foo";
并像这样引用它:
<cfquery name="test" datasource="#application.dsn#">
当您在 CFC 中将变量定义为 this.datasource
时,this
作用域仅存在于该 CFC 的上下文中。它无法从外部访问。
我可以在任何 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>
但是在常规标签中,如果数据源在这个范围内,您根本不需要指定数据源:
<cfquery name="get">
SELECT id
FROM restaurants
WHERE email = '#something#'
UNION
SELECT id
FROM individuals
WHERE email = '#something#'
</cfquery>