万卷书>>电脑书籍>>网页制作>>网页制作软件使用>>ColdFusion 初级教程

WANJUANSHU.COM

动态SQL

嵌入使用动态参数的SQL查询是将用户输入与数据库字段相对应起来的强大机制。但是,在更复杂的应用程序中,通常不仅需要根据用户输入决定查询内容,而且需要根据用户输入决定查询的结构。


 

动态SQL使你能够动态地决定(根据运行时参数)对数据库执行SQL语句的哪一部分。例如,如果用户没有在一个查询字段中输入数据,你可以忽略WHERE从句中与该字段相关的部分。如果用户没有指定按哪个字段排序,则整个ORDER BY从句可以被忽略。


 

在ColdFusion中动态SQL的实现是利用CFIF/CFELSEIF/CFELSE标签控制SQL语句的建立。在CFQUERY中一个动态SQL语句有如下形式:


 

<CFQUERY NAME=" queryname"


 

DATASOURCE=" datasourcename" >


 

...Base SQL statement


 

<CFIF value operator value >


 

...additional SQL


 

</CFIF>


 

</CFQUERY>


 

在下面的例子中,用一系列CFIF标签来确定将哪一个SQL语句追加到基本SQL SELECT语句后面:


 

<CFQUERY NAME="GetParkList"


 

DATASOURCE="CF 4.0 Examples">


 

SELECT *


 

FROM Parks


 

WHERE 0=0


 

<CFIF #ParkName# is not "">


 

AND ParkName LIKE ‘%#ParkName#%’


 

</CFIF>


 

<CFIF #ParkType# is not "AllTypes">


 

AND ParkType = ‘#ParkType#’


 

</CFIF>


 

<CFIF #Region# is not "AllRegions">


 

AND Region = ‘#Region#’


 

</CFIF>


 

<CFIF #State# is not "">


 

AND State = ‘#State#’


 

</CFIF>


 

</CFQUERY>


 

提示:WHERE 0=0从句对数据库查询不产生任何影响。但如果所有的CFIF条件都不成立,该从句可以保证WHERE从句不会产生SQL语法错误。


 

下面的例子演示了如何用动态SQL来确保一个多选列表框的输入:


 

<CFQUERY NAME="GetParkList"


 

DATASOURCE="CF 4.0 Examples">


 

SELECT *


 

FROM Parks


 

WHERE 0=0


 

<CFIF IsDefined("ParkName_ID")>


 

AND ParkName_ID IN (#Form.ParkName_ID#)


 

</CFIF>


 

</CFQUERY>

 
上一页 WanJuanShu.COM 下一页
WANJUANSHU.COM 万卷书