2011-09-29 57 views
7

当我使用ColdFusion 8中的cfquery标记从MySQL表中选择数据时,即使将它们存储在数据库表中的camelCase中,列名也都会转换为大写。有没有办法让ColdFusion尊重列名的情况?如何阻止Coldfusion将查询列名转换为大写?

我问的原因是因为我将查询结果作为JSON对象返回,并且我不想在JavaScript端使用大写属性名称,因为我保留常量的命名约定。

回答

5

在查询对象上使用getMetaData。它返回一列显示您在查询中使用的相同大小的列。

+1

哦,对不起 - 你想要的情况下,因为它是在数据库中。不是上限,而不是SQL显示的内容。你可以做的最好的事情是使用cfdbinfo。这应该工作。您需要使用它并将其与查询结果一起返回。 –

+0

为了澄清,这是否意味着我将不得不发送两个JSON对象,一个包含结果集,另一个包含列名?那么还是要做一些匹配算法来匹配数据到正确的属性?或者,有没有办法将从cfdbinfo获取的列名与查询结果对象合并? –

+1

我可能会手动构建JSON,使用CFDBINFO查询中的列名以及查询中的值。 –

7
queryName.getMetaData().getColumnLabels() 

返回查询列标签的数组与原始情况下,从查询

+0

我认为他们需要* database *的情况。在这种情况下,他们需要使用cfdboinfo或mySQL的元数据表。未记录的元数据方法返回sql中使用的大小写可能完全不同。一切取决于它是如何输入的。 – Leigh