前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >ColdFusion - Basic - cfquery

ColdFusion - Basic - cfquery

作者头像
szhshp
发布2022-09-21 10:14:41
发布2022-09-21 10:14:41
40200
代码可运行
举报
运行总次数:0
代码可运行

Basic

代码语言:javascript
代码运行次数:0
复制
<CFQUERY name="local.getBaBusList" datasource="#Request.CompanyEHS_ODBC#">
   SQL……
</CFQUERY>

注意 name 不要加井号

cfqueryparam

代码语言:javascript
代码运行次数:0
复制
<cf_queryparam list="true" separator="|" value="#Attributes.limitToBusinessList#" />

默认分割符是, 逗号分隔 因此特殊情况需要特殊设置 如果遇到这样的列表

代码语言:javascript
代码运行次数:0
复制
GE OneEHS|GE OneEHS|GE Oil and Gas|GE OneEHS 

写成

代码语言:javascript
代码运行次数:0
复制
separator="|"

对于时间用作参数

使用时间作为 cfqueryparam 参数时, 简单的时间可以使用字符串

代码语言:javascript
代码运行次数:0
复制
<cfqueryparam cfsqltype="cf_sql_char" value="#form.datadate#">

但是更好的解决方法:

代码语言:javascript
代码运行次数:0
复制
#CreateODBCDateTime(datadate)#

对于

代码语言:javascript
代码运行次数:0
复制
<cf_queryparam list="true" separator="|" cfsqltype="cfsqlvarchar" value="#Attributes.limitToBusinessList#" />

则相同于 SQL 中

代码语言:javascript
代码运行次数:0
复制
N'here is a string'

的形式


此外使用 cf_queryparam 当 dump 的时候会将参数放到 SQL 详细中 而使用 cfqueryparam 的时候参数会以列表的形式出现

ValueList 相关

有时候如果需要将某些 Result 作为 Query 的条件, 就需要用到 ValueList

例如需要使用如下代码中的 Top5Site 作为搜索条件

代码语言:javascript
代码运行次数:0
复制
<cfquery name="Top5Site" datasource="#ODBC#">
  select top(5) s.location Site
  FROM ……
</cfquery>

大括号相关

有时候 SQL 里面会使用大括号作为搜索名

示例

代码语言:javascript
代码运行次数:0
复制
<cfquery name="q" datasource="CC_TEST">
    select top(10) [CONTACTID] from ltbContact;
</cfquery>

使用方法

CF: 一般搜索结果会有很多行, 因此只需要使用循环输出

代码语言:javascript
代码运行次数:0
复制
<cfloop index="i" from="0" to="10">
  <cfoutput>
    #i# - #q['CONTACTID'][i]#<br>
  </cfoutput>
</cfloop>

如果只需要输出第一行就只需要把第二个 index 改为 1

代码语言:javascript
代码运行次数:0
复制
<td>#bigquery['complete air emission inventory (all sources)'][1]#</td>

关于 recordcount

使用 name 的参数作为变量即可 2016-01-13 14:58:16 星期三

代码语言:javascript
代码运行次数:0
复制
<CFQUERY name="local.getBaBusList" datasource="#Request.CompanyEHS_ODBC#">
   SQL……
</CFQUERY>
……
#local.getBaBusList.recordcount#

动态输出 dynamic output for cfquery

注意输出时的循环不能使用 loop in list

代码语言:javascript
代码运行次数:0
复制
query[col][row]
代码语言:javascript
代码运行次数:0
复制
for (var index = 1; index lte arguments.QuerySuperSet.RecordCount; index++) {
  if (QuerySuperSet["orgname"][index] != "" && QuerySuperSet["suborg"][index] != "!" && QuerySuperSet["location"][index] == "") {
    arrayAppend(labelArray, QuerySuperSet["orgname"][index] & ' / ' & QuerySuperSet["suborg"][index]);
    arrayAppend(sumArray, val(QuerySuperSet[arguments.ColumnName][index]));
  }
}

按列顺序输出 cfloop query with group

  • 仅在 CF11 之后版本有效
  • 注意最后一层我们是按照 Loc 输出,loc 还是要出现在 loop 的 group 里面
  • 必须使用已经排序好的 Query
代码语言:javascript
代码运行次数:0
复制
<cfloop query="sites" group="orgname">
  <optgroup label="#sites.orgname#"></optgroup>
  <cfloop group="suborg">
    <optgroup label="#sites.suborg#">
      <cfloop group="location">
        <option value="#sites.siteid#" orgId="#sites.org#">#sites.location#</option>
      </cfloop>
    </optgroup>
  </cfloop>
</cfloop>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Basic
  • cfqueryparam
  • 对于时间用作参数
  • ValueList 相关
  • 大括号相关
    • 示例
    • 使用方法
    • 关于 recordcount
  • 动态输出 dynamic output for cfquery
  • 按列顺序输出 cfloop query with group
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档