ColdFusion如何從資料庫讀取資訊例子

javaprogramers發表於2006-05-15

<CFQUERY NAME= "abc" DATASOURCE= "employee">
SELECT * FROM employee_info
</CFQUERY>

<html>
<head>
<title>職員工資表</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<table width="50%" border="1" bordercolor="#000000">
<tr>
<td>編號</td>
<td>職員姓名</td>
<td>工資</td>
</tr>
<CFOUTPUT QUERY= "abc">
<tr>
<td>#employee_id#</td>
<td>#employee_name#</td>
<td>#employee_salary#</td>
</tr>
</cfoutput>
</table>
</body>
</html>

顯示為以下情況

編號 職員姓名 工資
1 王老虎 2000
2 周星馳 2500
3 張三丰 2300
... ... ...

 

我們來看看程式碼中用到哪些CFML語言
1.
<CFQUERY NAME= "abc" DATASOURCE= "employee">
SELECT * FROM employee_info
</CFQUERY>

SELECT 列名 FROM 表名
是一個標準的SQL語法,它的意思是從一個資料庫表裡,把資料抓出來。常用的還有UPDATA更新,INSERT新增,DELETE刪除等。不管你用的是何種ODBC資料庫,都支援SQL語法。

CFQUERY標記使用了兩個屬性name和datasource
datasource是想要訪問的資料來源的名稱,上節課我們在COLDFUSION ADMINISTRATOR裡定義的ODBC名稱。你可能擁有好幾個資料庫,所以datasource必須要指定一個。
NAME也是必須要有的,相當於在網頁中起了一個變數名,暫放Select的結果,以後我們就可以直接呼叫NAME裡的資料了,只需要查詢資料庫一次。

2.
<CFOUTPUT QUERY= "abc">HTML和CFML語句</cfoutput>
我們又看到CFOUTPUT了,這次有些不同。我們使用QUERY屬性指定了CFOUTPUT將輸出ABC裡的內容。ABC目前存放了SELECT * FROM employee_info的結果,其中包括employee_id,employee_name,employee_salary三個列的資料。在<cfputout query="abc"></cfoutput>之間,我們用#符號,輸出了這些結果。並利用了html的tr,td排版了這些內容。是不是很簡單,如果SELECT查詢結果有10條記錄的話,cfoutput就迴圈執行10次,依次把記錄顯示出來。

你可以利用SQL語法的特性,安排顯示的順序,如SELECT * FROM employee_info ORDER BY employee_salary DESC ,以工資從高到低的方式排序。或者限定哪些內容可以輸出等等。我們可以去參考一些SQL的語法書籍。不同資料庫之間的SQL語法,稍有區別。

恩,現在我們為EMPLOYEE資料庫裡新增一個資料列,名為employee_address並存放一些職員的家庭住址在裡面。你也可以直接在這裡下載,覆蓋先前的資料庫檔案。

接下來,我們把home.cfm新增一些程式碼,修改成以下情況。

<CFQUERY NAME= "abc" DATASOURCE= "employee">
SELECT * FROM employee_info
</CFQUERY>

<html>
<head>
<title>職員工資表</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<table width="50%" border="1" bordercolor="#000000">
<tr>
<td>編號</td>
<td>職員姓名</td>
<td>工資</td>
</tr>
<CFOUTPUT QUERY= "abc">
<tr>
<td>#employee_id#</td>
<td><a href="home2.cfm?no=#employee_id#">#employee_name#<a></td>
<td>#employee_salary#</td>
</tr>
</cfoutput>
</table>
</body>
</html>

顯示為以下情況

編號 職員姓名 工資
1 王老虎 2000
2 周星馳 2500
3 張三丰 2300
... ... ...

哦,我們為職員姓名做了一個URL連線到HOME2.CFM上,並傳遞了一個引數。
home2.cfm?no=1 (#employee_id#,已經被CFOUTPUT轉化成值了)
?代表把URL與正在傳遞的引數隔開。
本例中我們只傳遞一個引數,如果傳遞兩個以上的話,需要用&號閣開如home2.cfm?no1=xxx&no2=yyy

現在我們來儲存HOME2.CFM的檔案

<CFQUERY NAME= "abc2" DATASOURCE= "employee">
SELECT * FROM employee_info where employee_id=#url.no#
</CFQUERY>

<html>
<head>
<title>home2.cfm</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<table width="50%" border="1" bordercolor="#000000">
<tr>
<td>編號</td>
<td>職員姓名</td>
<td>工資</td>
<td>家庭住址</td>
</tr>

<CFOUTPUT QUERY= "abc2">
<tr>
<td>#employee_id#</td>
<td>#employee_name#</td>
<td>#employee_salary#</td>
<td>#employee_address#</td>
</tr>
</CFOUTPUT>

</table>
</body>
</html>

顯示為下列情況

編號 職員姓名 工資 家庭住址
1 王老虎 2000 陝西老虎村

簡單嗎?利用SELECT * FROM employee_info where employee_id=#url.no# 中where 來把上一頁傳遞過來的NO引數值與employee_id對比,來決定SELECT的查詢條件,最後輸出。

相關文章