大多数人已经知道使用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,但没有找到答案。
谢谢
答案 0 :(得分:1)
首先,JDBC不能可靠地公开您需要的表信息,而ColdFusion实现中的相关方法(getTableName()
)只会引发异常。所以简短的版本是你不能做你想要的,你想要的。
那就是说,我认为你应该以不同的方式处理事情。有一个包含数据和架构信息的数据结构的想法似乎...... 错误给我。
答案 1 :(得分:0)
我建议采用这种方法。将查询放入一个函数中,该函数接受有关包含表名的强制参数。如果必须提供它们,请将它们包含在列别名中,并用双引号括起来。像这样:
select table1.field1 "table1.field1"
, table1.field2 "table1.field2"
etc