根据数据源查找数据库信息

Finding DB info based on Datasource

我希望从数据源名称中获取数据库服务器和数据库信息。

我试过使用 <cfdbinfo> 但它似乎没有任何信息

<cfdbinfo
    type="dbnames"
    datasource="#dsn#"
    name="dbdata">

<cfoutput>
The #dsn# data source has the following databases:<br />
</cfoutput>
<cfdump var="#dbdata#">

我希望获得以黄色突出显示的信息

您将需要创建一个管理对象 API、登录,然后创建一个数据源对象 API,如下所示:

<cfset admin_api = createObject('component', 'cfide.adminapi.administrator')>
<cfset admin_api.login('cf_admin_password_here')>
<cfset admin_api_dsn = createObject('component', 'cfide.adminapi.datasource')>

然后您可以使用数据源公开的方法 API 来检索您需要的信息。

另一种选择是从 {cf_root}/lib/ directory 中读取文件 neo-datasource.xml,使用 xmlparse 对其进行解析,然后从那里读取数据。

这是我同事几年前想出的另一种方法。

<cfobject type="JAVA" action="Create" name="factory"
class="coldfusion.server.ServiceFactory">
<cfscript>
sqlexecutive = factory.getDataSourceService();
//get data sources 
ds=sqlexecutive.getDatasources();
</cfsript>

不确定它是否比 Andrew 的方法更好或更差,但有选择很好。