使用Coldfusion检索MySQL数据库列名(带表名)

时间:2013-10-08 09:11:46

标签: mysql sql coldfusion

希望有人会帮助我,因为这让我摸不着头脑。

大多数人已经知道使用coldfusion检索mysql查询列名的两种简单方法:

1. <cfset arrColumns = ListToArray(thequery.columnList) />
2. <cfset arrColumns = getMetaData(thequery) />

这两个列都会成功创建一个列名称数组(按字母数字顺序排列1,按数据库顺序检索2)。

例如:

<cfquery name="thequery" datasource="thedatasource">
    SELECT a.title, b.name 
    FROM tablea a
    JOIN tableb b ON b.a_id = a.id
</cfquery>
<cfset arrColumns = ListToArray(thequery.columnList) />

上面会成功输出一个值为:

的数组
arrColumns[1]: "name" 
arrColumns[2]: "title"

我需要做的是输出:

arrColumns[1]: "tableb.name" 
arrColumns[2]: "tablea.title"

...基本上,要包含数据库表名和列名。这让我摸不着头脑,任何帮助都会非常感激。我已经搜索过Google和stackoverflow,但没有找到答案。

谢谢

2 个答案:

答案 0 :(得分:1)

首先,JDBC不能可靠地公开您需要的表信息,而ColdFusion实现中的相关方法(getTableName())只会引发异常。所以简短的版本是你不能做你想要的,你想要的。

那就是说,我认为你应该以不同的方式处理事情。有一个包含数据和架构信息的数据结构的想法似乎...... 错误给我。

答案 1 :(得分:0)

我建议采用这种方法。将查询放入一个函数中,该函数接受有关包含表名的强制参数。如果必须提供它们,请将它们包含在列别名中,并用双引号括起来。像这样:

select table1.field1 "table1.field1"
, table1.field2 "table1.field2"
etc