如何从应用程序 cfc 文件中引用第二个数据库

How do I reference a second DB from an application cfc file

在我们的门户 application.cfc 中,我们定义(设置)我们的 DSN 连接如下:

<cfset this.datasource = "DSN1"> (Main DB) <cfset this.datasource_1 = "DSN2"> (2nd DB) <cfset this.datasource_2 = "DNS3"> (3rd DB)

这些在标签中。然后我也移动到“OnApplicationStart”功能,但无法使其正常工作。

这个 application.cfc 如果在主 APP 中引用,其他应用程序可以访问(App2 等),我的问题是;

如何在 App2 应用程序的查询中引用其他数据源 (this.datasource_2)?

<cfquery name="queryname" datasource="**[What goes here]**"> For second datasource

this.datasource DSN 总是被引用,因为 cfquery 标签中没有列出数据源。

如果您能提供任何帮助或发送给我的链接,我们将不胜感激。提前致谢!

尝试查看其他应用程序变量

<cfset application.datasource_1 = "DSN2">  (2nd DB)
<cfset application.datasource_2 = "DNS3"> (3rd DB)

我的解决方案是根本不使用任何变量,而只是对数据源名称进行硬编码。换句话说,为此:

<cfquery name="queryname" datasource="**[What goes here]**"> For second datasource

答案是"DSN2"

为了使这些数据源可用,必须在服务器上定义它们并且您必须知道它们的名称。如果将它们分配给某种全局变量,那么您将必须知道该变量的名称。我认为在这种情况下使用全局变量没有任何价值。

对于 DSN1,使用全局变量有利也有弊。变量的优点是使用该数据库的查询不需要数据源属性。缺点是如果某些查询具有数据源属性而其他查询没有,那么您的代码会变得不太一致。这个话题最好在喝啤酒的时候当面讨论。

或者您可以使用 Applicaton.cfc this.datasources 结构