放置在ColdFusion CFC中时,SQL语句不起作用

时间:2012-08-29 14:22:25

标签: sql sql-server database coldfusion cfc

我有以下表连接在Microsoft SQL Server中正常运行并返回预期结果。

SELECT     d.id1, c.content_type
FROM       Document2 AS d INNER JOIN
           Content2 AS c ON d.content_id = c.content_id
WHERE     (d.class_id = 1)

但是,当我将语句放入ColdFusion CFC时,语句将不会执行,我也无法返回任何内容。语法是否在CFC文件中更改? Microsoft SQL语法是否与ColdFusion CFC语法不同?或者我在这里错过了其他什么?

这是相关功能。如果我使用不是表连接的简单SQL语句,我可以使用此代码。但是,当我插入表连接语句时,什么都不会返回。

  remote array function getcontent() {
    var q = new com.adobe.coldfusion.query();
     q.addParam( name="searchParam", value="#searchName#" );
    q.setDatasource("Document");
    q.setSQL("SELECT d.id1, c.content_type FROM Document2 
    AS d INNER JOIN   
    Content2 AS c ON d.content_id = c.content_id WHERE (d.class_id = 1)");

    var data = q.execute().getResult();
    var result = [];
    for(var i=1; i<= data.recordCount; i++) {
        arrayAppend(result, {"id"=data.d.id1[i], "Type"=data.c.content_type[i]});
    }
    return result;
}

1 个答案:

答案 0 :(得分:8)

问题在于这行代码:

arrayAppend(result, {"id"=data.d.id1[i], "Type"=data.c.content_type[i]});


您没有像这样引用数据库变量 - 表别名不是列别名的一部分。

您应该使用:

data.id1[i]


如果您确实在列别名中有.,那么您需要使用括号表示法来引用它,如下所示:

data['d.id1'][i]

但同样,表别名不是列别名的一部分,因此不需要。