程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 利用 Macromedia Coldfusion 在 DB2 UDB 中編程

利用 Macromedia Coldfusion 在 DB2 UDB 中編程

編輯:DB2教程

概述

用戶界面圖形儲存庫(User Interface Graphics Repository,UIGR)Web 應用程序工具是由 IBM 多倫多軟件實驗室的多媒體設計工作室開發的,它被用作展示 Coldfusion-DB2 應用程序基本設置的一個例子。UIGR 應用程序允許設計人員、開發人員、信息開發人員和人類因素專業人員(human factor professional),對 IBM 軟件中使用的一萬多幅視覺畫面進行高級研究。


圖 1. 用戶界面圖形儲存庫(UIGR)Web 應用程序
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

在閱讀本文之後,您應該能夠建立這樣一個環境:在該環境中,使用 DB2 UDB 作為後端數據庫,使用 Coldfusion 作為應用程序服務器,同時將 Coldfusion 連接到 DB2。此外,在閱讀本文之後,您應該熟悉那些在 DB2 和 Coldfusion 中經常使用的工具,並了解如何通過 Coldfusion 語言訪問和處理數據。

本文中使用的產品

DB2 UDB Version 8.2 (JDK IBM 1.4.1)

DB2 Universal Database 是數據庫管理系統,它提供了一個靈活並且經濟有效的數據庫平台,以便在隨需應變應用程序上構建健壯性。DB2 UDB 進一步充分利用您的資源來廣泛支持一些開放標准和流行的開發平台,比如 J2EE™ 和 Microsoft® .Net。

Macromedia ColdfusionMX 標准:

有了 ColdFusion MX,您就可以構建和部署功能強大的 Web 應用程序和 Web 服務,所需的培訓時間和代碼行遠遠不及 ASP、PHP 和 JSP 的多。

apache 2.0.48 Web 服務器:

自 1996 年 4 月起,Apache 一直是 Internet 上最流行的 Web 服務器。2004 年 8 月,Netcraft Web Server Survey 發現,Internet 上有 67% 的 Web 站點在使用 apache,這使它得到了比其他所有 Web 服務器更為廣泛的使用。

使用的操作系統:Microsoft Windows® Server 2003 Standard Edition。還可以使用 Linux。

設置和配置

apache 是作為 Web 服務器安裝在計算機上的。Coldfusion 是作為“應用服務器”安裝在 Web 服務器之上的。而 DB2 則是作為關系數據庫安裝的。一旦安裝並配置好這一切,Web 服務器就會將所有 Coldfusion 文件格式(*.cfm、*.cfml、*.cfc 等)傳遞給 ColdFusion Application Server 進行處理。如果有必要的話,Coldfusion 會與數據庫進行交互,並將解析後的頁面返回給 Web 服務器,然後 Web 服務器返回這些頁面,以便在浏覽器中顯示它們。


圖 2. 應用程序設置和工作流
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

順序

推薦的安裝順序是:先安裝 Web 服務器(在這裡是 Apache),然後安裝數據庫(DB2),最後安裝應用服務器(Coldfusion)。盡管這個順序不是必要的,但按照指定的順序安裝會讓配置更順利一些,比如說,Coldfusion 會認出 apache Web 服務器,並修改配置文件,以便通知 Coldfusion 服務器將要傳遞的所有 Coldfusion 文件格式,對這些格式進行解析。它還會認出 DB2,並(根據您所擁有的 Coldfusion 和 DB2 版本)添加適當的數據驅動程序,從而使得連接到數據庫就像從下拉菜單中選擇連接類型一樣容易。

Apache:根據 Apache Web 站點上給出的指令下載和安裝 apache Web 服務器。配置文件的修改包含在 Coldfusion 的設置中,如下所示。

DB2 UDB:如果還沒安裝 DB2 UDB,可以從資料站點下載一個試用版。使用 Coldfusion 不需要特殊的安裝細節。UIGR 應用程序使用 DB2 UDB V8.2。一旦完成安裝,您至少還需要創建一個數據庫和一個表,以便在它們之間建立連接,並測試是否可以訪問所創建表中的數據。有許多種注冊您的數據庫、從而讓 Coldfusion 可以看見該數據庫的方法。以下是兩種常見方法:

1. 使用 DB2 中的 Configuration Assistant 工具

可以從 Windows 的開始菜單中以及從 DB2 控制中心中獲得 Configuration Assistant 工具,它允許您“用向導添加數據庫(Add Database Using Wizard)”或者為現有數據庫修改連接屬性。仔細查看向導,然後測試您所選定的數據庫。以下是涉及到的一些步驟:


圖 3. 使用 DB2 Configuration Assistant 注冊一個 ODBC 連接
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

根據環境選擇協議。在 UIGR 應用程序中,DB2 被本地安裝到服務器中,所以選擇 Local 設置。


圖 3.1. 選擇通信協議
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

選擇創建數據庫的場所,然後選擇要注冊的數據庫。


圖 3.2. 選擇場所和要注冊的數據庫
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

-

提供一個數據庫名和別名。您需要在 Coldfusion 數據源設置中確定這個別名。在下一步中,要建立從 Coldfusion 到這個數據庫的連接。


圖 3.3. 為數據庫提供一個別名
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

以數據源的形式注冊數據庫,以便將它用於 ODBC 應用程序。


圖 3.4. 以數據源的形式注冊數據庫
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

2. 通過操作系統注冊數據庫

注冊數據庫,讓 Coldfusion 看見該數據庫的第二種方法是通過操作系統注冊數據庫。在這裡,該操作系統是 Windows,並且使用了 ODBC Data Source Administrator。

選擇 Add 來添加一個新的數據源,然後選擇驅動程序和要注冊的數據庫別名(可以從 control panel / Administrative Tools / Data Source 中獲得)。


圖 3.5. 添加數據庫別名
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

圖 3.6. 為要設置數據源的數據庫選擇驅動程序
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

圖 3.7. 為 DB2 數據庫選擇別名
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

既然已經設置並配置好了 DB2,那麼下一步就是安裝和配置 Macromedia Coldfusion。

Coldfusion MX:如果還沒有安裝 Coldfusion MX,那麼可從 Macromedia Web 站點獲得一個試用版。UIGR 應用程序使用 Coldfusion MX 服務器的標准版。

如果在安裝 Apache Web 服務器之後安裝 Coldfusion,那麼您會獲得提示,要求您定位 apache 的 httpd.conf 配置文件。確保以下內容已經添加到基本配置中。如果不能保證,也許您想卸載,並按正確的順序重新安裝這些配置文件,以確保 Web 服務器知道如何處理可接受的 Coldfusion 文件。您可以手工修改 apache 配置文件,但可能需要根據您的環境修改以下代碼片段(例如,安裝 Coldfusion 的位置可能與清單 2.1 中的不同)。

打開位於“conf”文件夾中的 httpd.conf 文件,apache 也安裝在這個文件夾中。

定位這些注釋和代碼行。


清單 1. apache httpd.conf 配置文件的修改
# 
# DirectoryIndex: sets the file that apache will serve if a directory 
# is requested. 
# 
# The index.Html.var file (a type-map) is used to deliver content- 
# negotiated documents. The MultiVIEws Option can be used for the 
# same purpose, but it is much slower. 
# 
DirectoryIndex index.html index.Html.var index.cfm 

如果最後一行如下所示:


清單 1.1
DirectoryIndex index.html index.Html.var 

那麼您需要將“index.cfm”添加到這一行中,如清單 1 中所示。

接下來,要定位這些注釋和代碼行:


清單 2.
# 
# Bring in additional module-specific configurations 
# 
<IfModule mod_ssl.c> 
  Include conf/ssl.conf 
</IfModule> 

Coldfusion 會將以下內容添加到這行代碼中,以確保 Web 服務器將適當的 Coldfusion 文件格式傳遞給 Coldfusion 應用程序進行處理。請記住,如果手工修改配置文件,那麼需要根據安裝 Coldfusion 的位置來反映位置設置。這些區域如下面斜體字 所示。


清單 2.1
# 
# Bring in additional module-specific configurations 
# 
<IfModule mod_ssl.c> 
  Include conf/ssl.conf 
</IfModule> 
# JRun Settings 
LoadModule jrun_module "D:/CFusionMX/runtime/lib/wsconfig/1/mod_jrun20.so" 
<IfModule mod_jrun20.c> 
  JRunConfig Verbose false 
  JRunConfig Apialloc false 
  JRunConfig Ssl false 
  JRunConfig Ignoresuffixmap false 
  JRunConfig Serverstore "D:/CFusionMX/runtime/lib/wsconfig/1/jrunserver.store" 
  JRunConfig Bootstrap 127.0.0.1:XXXXX 
  #JRunConfig Errorurl <optionally redirect to this URL on errors> 
  AddHandler jrun-handler .JSP .jws .cfm .cfml .cfc 
</IfModule> 

現在,您的 Web 服務器配置已經可以認出 Coldfusion 了,啟動 Coldfusion Administrator,然後從左邊的導航中選擇 Data Sources 鏈接。

為 Coldfusion 提供數據源名稱,並從選擇框中選擇一個適當的驅動程序。根據您正在使用的 Coldfusion 版本,可能會為您提供一個 DB2 驅動程序(JDBC/ODBC)。這裡提供的數據源名稱是一個特定於 Coldfusion 的已注冊 ODBC 數據源的別名,該數據源是使用 DB2 Configuration Assistant 或數據源管理工具完成注冊的。


圖 4. Coldfusion Administrator:數據源
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

選擇“Connected Data Sources”表中的新的數據源超級鏈接,它會顯示新數據源鏈接的屬性。從選擇框中選擇已注冊的 ODBC DSN(數據源名稱)。還需要提供對數據庫的身份驗證。對於 UIGR 應用程序,要對 DB2 進行身份驗證,則需要數據管理的配置文件用戶名和安裝 DB2 的口令。通過選擇 Verify All Connections 按鈕,可以確認 Coldfusion 連接到了數據庫。表的 Status 欄將顯示您是否成功。查看屬性對話框中其他可用選項,因為它們將確定您可以使用的數據庫功能的范圍。


圖 4.1. Coldfusion Administrator:數據源:ODBC Socket
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

連接到 DB2 並使用 Coldfusion 處理數據

這一節將查看許多 ColdFusion 標記語言(ColdFusion Markup Language,CFML)標簽。如果您熟悉超文本鏈接標記語言(Hyper Text Markup Language,Html),那麼您會萬事順利。全面的 CFML 語言語法可以在 Macromedia Web 站點上的 Coldfusion 資料中找到。

以下是一些基本的代碼示例,這些示例有助於您了解如何使用 CFML 與數據庫交互。

Application.cfm 文件:每一個 Coldfusion 應用程序都需要包含一個叫做 application.cfm 的文件。每次加載新的頁面,都需要執行這個 application.cfm 文件。該文件定義了應用程序級設置和函數。這裡編寫的所有變量都可以用於任何頁面(全局變量)。以下是來自 UIGR 應用程序的一個例子:


清單 3. Application.cfm 頁面
cfapplication name="DB2_UIGR" sessionmanagement="yes"> 
<!--- global variable for the database source name which was defined in the 
  coldfusion administrator ---> 
<cfset DSN = "CF_TEST2"> 
<!--- set login max to 20 minutes ---> 
<cfset timeOut = 20*60> 
<cfset schemaName = "Administrator"> 

<cfapplication name="DB2_UIGR" sessionmanagement="yes"> 。要將應用程序的每一頁作為某個應用程序的一部分來定義,則需要在 application.cfm 文件中定義一個 cfapplication name。還要設置變量作用域,以限制變量只在某個“會話”中活動。通過上述操作您可以看到:如果某個會話在 20 分鐘內沒活動,那麼該會話將超時。如果用戶關閉浏覽器窗口,會話也會結束。當應用程序請求用戶登錄到某些頁面或者請求特殊特性時,這一點很重要。因為 application.cfm 文件是在每個頁面上執行的,所以需要在每個頁面上測試用戶名和口令變量,以阻止一些討厭的用戶在未經過適當身份驗證的情況下通過鍵入特定 URL 獲得訪問權。

<cfset DSN = "CF_TEST2"> 。在 application.cfm 文件中為 Data Source Name 設置一個變量通常是個好注意,因為每次查詢數據庫時都需要引用它。在這裡定義一個變量會使切換到另一數據源變得容易一些。

<cfset schemaName = "Administrator"> 。如果您能預測在什麼時候更改特殊數據庫的模式,那麼為數據庫模式名添加一個變量也是個好主意。再次聲明,在 application.cfm 中設置變量會使該變量成為全局變量,並且可以從應用程序的任何頁面中獲得該變量。如果在 DB2 中更改數據庫名或模式名,那麼需要在 application.cfm 中更改這個變量,這時就完成了您要做的操作。


圖 5. DB2 控制中心:表格細覽
利用 Macromedia Coldfusion 在 DB2 UDB 中編程

如何查詢數據庫並將結果顯示回浏覽器中

以下是來自 UIGR 應用程序的一個例子。Coldfusion 頁面中包含與典型 Html 頁面中相同的框架,但它包含一些只有 Coldfusion 應用程序服務器才能解析的附加 Coldfusion(CF)標簽。


清單 4. 通過 CFML 查詢數據庫
<cfquery name="getBrand" datasource="#DSN#"> 
SELECT brand_id,brandname 
FROM UIGR_Brand 
ORDER BY brandname 
</cfquery> 
<cfquery name="getUIgraphictype" datasource="#DSN#> 
SELECT uigt_id,uigtname 
FROM UIGR_uigraphictype 
ORDER BY uigtname 
</cfquery> 
<BODY> 
<form action="results1.cfm" method="get"> 
<table> 
<tr> 
<td>Brand<br> 
<select name="Brand" size="7" > 
<cfoutput query="getBrand"> 
<option value="#brandname#">#brandname#</option> 
</cfoutput> 
</select> 
</td> 
</tr> 
</table> 
</form> 
</BODY> 

<cfquery name="getBrand" datasource="#DSN#"> 。這是 Coldfusion 中使用的標簽,用於將查詢語句或 SQL 語句傳遞給數據源。name 屬性是作為 ID 提供的,因此您可以在 <cfoutput> 標簽內使用這個查詢的結果。datasource 屬性確認了該查詢從中獲得數據的數據庫。在 application.cfm 文件中,這個變量被聲明為 DB2 中的數據源,這裡也是存儲數據的地方 <cfset DSN = "CF_TEST2">。為了在 Coldfusion 文件中引用 Coldfusion 變量,必須在該變量的兩邊加上 #variablename#。可以在 <cfquery> 標簽內將 SQL(結構化查詢語言)語句傳遞給數據庫。DB2 執行這條 SQL 語句,並發送回結果。在上面的第一個例子中,從 CF_TEST2 數據庫中的 "UIGR_Brand" 表中 SELECT(選擇)"brand_id" 和 "brandname" 列。然後根據表中的 "brandname" 列,對返回的結果進行 ORDER。在默認情況下,"brandname" 是按字母順序排列的。

因為已經編寫好了 <cfquery>,所以只要輸出該數據,就可以在浏覽器中看見它們。在 Coldfusion 中,<cfoutput> 標簽用來顯示 <cfquery> 的結果。


清單 5. 使用 CFML 輸出數據結果
<cfoutput query="getBrand"> 
<option value="#brandname#">#brandname#</option> 
</cfoutput> 

query 屬性告訴 Coldfusion 您想輸出哪條查詢記錄。在這種情況下,可以使用從早先定義的 "getBrand" 查詢中返回的記錄。

<option value="#brandname#">#brandname#</option> 。無論 <cfoutput></cfoutput> 標簽之間出現的是什麼,都將應用於返回的每條記錄。在這種情況下,每個品牌名都將填充字段中的一個選擇框,如下方 UIGR 應用程序屏幕捕獲中的高亮顯示區域所示。有三條記錄從 "getBrand" 查詢中返回,每條記錄都被指派為下方所示字段中的選擇項的值。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved