點(diǎn)擊cfquery標(biāo)簽之后dwmx出現(xiàn)的界面是這樣的:
上圖就是關(guān)于設(shè)置cfquery的窗口,圖形左邊的紅色矩形內(nèi)的三個(gè)部分可以對cfquery進(jìn)行不同細(xì)節(jié)程度的設(shè)置,general是我們最長用到的設(shè)置,connection則是連接設(shè)置,一般connection的部分屬性直接就可以通過cfmx administrator中的datasource設(shè)定來確定了。Persistent Queries表示設(shè)定一個(gè)持續(xù)的可以從緩存里調(diào)用的查詢。下面是cfquery的標(biāo)準(zhǔn)語法:
其中,name屬性是必須要有的,就是給你定義的cfquery一個(gè)名字,以后其他地方要調(diào)用的時(shí)候就會用到這個(gè)name屬性值找到相對的query。Datasource則是該查詢來自的數(shù)據(jù)源的名稱,而數(shù)據(jù)源的名稱則是通過設(shè)定cfmx administrator的。這里有必要插入一段關(guān)于設(shè)置數(shù)據(jù)源的方法。打開cfmx administrator管理界面,點(diǎn)擊Data & Services里的data Sources,然后看到管理界面的右側(cè)區(qū)域出現(xiàn)cfmx administrator已經(jīng)定義好了的數(shù)據(jù)源,截圖如下:
上圖表示1的部分?jǐn)?shù)據(jù)庫driver用的是microsoft access,而被2框選的部分則是兩個(gè)透過windows odbc設(shè)置的數(shù)據(jù)源名稱,數(shù)據(jù)驅(qū)動(dòng)用的是windows的odbc socket。而被3框選中的區(qū)域則是使用Microsoft SQL Server驅(qū)動(dòng)定義的數(shù)據(jù)源。設(shè)置access數(shù)據(jù)庫是一件非常容易的事情,首先你的access數(shù)據(jù)庫可以放在你本地硬盤的任何一個(gè)位置,并不是非要放在webserver的某個(gè)目錄之下,然后,從上圖中,可以從add new data source中填寫一個(gè)你想要的數(shù)據(jù)源名稱,名稱只要是標(biāo)準(zhǔn)的字符串就可以了,不能用數(shù)字開頭。然后,從Driver的下拉選項(xiàng)中,選擇Microsoft access這個(gè)驅(qū)動(dòng),然后點(diǎn)擊add,就進(jìn)入了詳細(xì)設(shè)置頁面:
基本上,設(shè)置access數(shù)據(jù)庫不需要設(shè)置什么高級選項(xiàng),但是如果有需要,比如限制對數(shù)據(jù)庫的操作等等,可以點(diǎn)擊show advanced settings來修改。上圖中的cfsnippets就是安裝完coldfusionmx后的默認(rèn)案例數(shù)據(jù)庫,就像裝完access這個(gè)軟件后,自動(dòng)就有northwind這個(gè)庫一樣。下面的cfquery例子我們就以cfsnippets為主。而sql server只是多加了幾步的設(shè)置,首先,在設(shè)置sqlserver的數(shù)據(jù)源時(shí)要填入sql server的database name,其次,要輸入sql server所在的ip,本機(jī)就用localhost就可以,最重要的是,必須輸入一個(gè)能夠有訪問該數(shù)據(jù)庫的權(quán)限的用戶名和密碼,作者這里推薦在sql server里設(shè)置好特定的用戶名和密碼,而不是使用默認(rèn)的sa帳號。
回到cfquery屬性說明,其他的屬性則不是必須具備的屬性。關(guān)于屬性的說明可以參考coldfusionMx自帶的reference 手冊。
讓我們來看一段簡單的cfquery的代碼:
<CFQUERY NAME="test" DATASOURCE="cfsnippets"> SELECT * FROM Employees ORDER BY Emp_ID < /CFQUERY> < cfoutput query="test"> #Emp_ID# | #FirstName# | #LastName# | #EMail# | #Phone# | #Department# <br> < /cfoutput>
結(jié)果是什么?看看下面的截圖:
令人驚奇的是可以循環(huán)輸出。。(shù)數(shù)cf代碼,只有幾行,而asp,jsp,php要完成同樣的效果,需要寫幾行代碼呢?想必用過的人都知道。
再來看一個(gè)復(fù)雜點(diǎn)的cfquery代碼:
<cfquery name="queryname" datasource="cfsnippets"> SELECT * FROM Employees WHERE LastName = 'Peterson' < /cfquery> < cfoutput>#queryname.FirstName# <br> #queryname.LastName# <br> #queryname.Department# <br> #queryname.recordcount# <br> #queryname.currentrow# <br> #queryname.columnlist# < /cfoutput>
<cfquery Name="queryname" datasource="cfsnippets"> SELECT * FROM Employees < /cfquery> < table border="1"> < tr> < td> Last Name </td> < td> First Name </td> < td> Department </td> < /tr> < cfoutput query="queryname"> < tr> < td>#LastName#</td> < td>#FirstName#</td> < td>#Department#</td> < /tr> < /cfoutput> < /table>
那么結(jié)果如下截圖:
我們首先是select出一段關(guān)于perterson這個(gè)雇員的相關(guān)信息,然后再列出所有雇員的信息。其次是用queryname.recordcount查看符合的記錄數(shù),用queryname.currentrow查看當(dāng)前的記錄是在數(shù)據(jù)庫中的第幾條,用queryname.columnlist表示數(shù)據(jù)庫的列的一個(gè)排序。最后我們還看到,幾行的代碼讓整個(gè)雇員表中的數(shù)據(jù)在html table中循環(huán)輸出,是不是各位已經(jīng)感覺到coldfusion的簡單快捷了?以后的教程中還有更令人吃驚的功能,包括內(nèi)置的全文檢索引擎,Generator的Data Driven flash(image),cf component和web services等功能的講解。
下一期的教程接著為大家講解cf basic tag編程,包括操作數(shù)據(jù)庫的cfinsert,、cfupdate;cfinclude和cflocation標(biāo)簽的使用,還要講解如何編寫coldfusion founction。好了,各位,咱們下一期見。
出處:
責(zé)任編輯:藍(lán)色
上一頁 ColdFusionMX Basic Tag編程 一 下一頁
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|