在我们的门户应用程序.cfc中,我们定义(设置(DSN连接,如下所示:
<cfset this.datasource = "DSN1"> (Main DB)
<cfset this.datasource_1 = "DSN2"> (2nd DB)
<cfset this.datasource_2 = "DNS3"> (3rd DB)
这些都在标签中。我还转到了"OnApplicationStart"函数,无法使其正常工作。
这个应用程序.cfc如果在主应用程序中引用,其他应用程序可以访问(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结构