| 導購 | 订阅 | 在线投稿
分享
 
 
 

用SQLServer爲Web浏覽器提供圖像(四)

來源:互聯網  2008-05-19 04:14:45  評論

建立Web項目和設置數據庫連接

在注冊了 ImageLoader 動態鏈接庫之後,我們就可以建立Web項目了。我們使用微軟Visual InterDev 1.0 建立ASP頁面以及到微軟SQL Server數據庫的數據連接。

首先,打開微軟Visual InterDev。在文件File 菜單裏,選擇新建(New)菜單項。在出現的對話框裏,選中Web項目向導,在項目名稱字段裏輸入ImageLoad 。單擊確定(OK),完成後面兩步,結束向導。

可以看到, Visual InterDev 在工作空間(Workspace)窗口裏自動地生成了一個文件,叫做Global.asa。在用戶第一次查看Web程序裏的頁面裏,就會自動生成這個文件。要連接SQL Server裏的數據庫,選擇項目 | 加入項目(Project | Add To Project),然後選擇數據連接(Data Connection)。這裏,選擇數據源對話框出現,我們必須定義一個數據源名稱(DSN)。

單擊新建(New)按鈕,在列出的可用數據驅動程序列表裏,選擇SQL Server,然後單擊下一步(Next)。接著,在輸入框裏輸入 Grocevb 作爲DSN。接下來的幾步很容易完成,不再詳述。

下面,出現了SQL Server 登錄對話框。輸入服務器名稱,登錄ID和口令,並單擊選項(Option)按鈕。從列出的可用數據庫列表裏,選擇Grocevb,單擊確定(OK)。在結束了全部以上步驟之後,就返回到了選擇數據源對話框。在這裏,從DSN列表裏單擊文件名 Grocevb.dsn,然後完成後面幾步結束這段操作。

現在,可以雙擊Global.asa,查看以上步驟在這個文件裏生成的代碼。代碼定義了連接SQL Server數據庫所必需的一些變量。

爲了初始化類 clsImageLoader ,必須在Global.asp的開始放兩行代碼。我們在列表 C裏列出了Global.asa裏的代碼。注意clsImageLoader 是一個會話範圍內的對象。

列表 C: Global.asa

<OBJECT RUNAT=Server SCOPE=Session ID=objImageLoader PROGID="ImageLoader.clsImageLoader"

</OBJECT

<SCRIPT LANGUAGE=VBScript RUNAT=Server

Sub Session_OnStart

Session("Grocevb_ConnectionString") = "DRIVER=SQL Server; SERVER=(local);

UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=JIA;

DATABASE=Grocevb;UseProcForPrepare=0"

Session("Grocevb_ConnectionTimeout") = 15

Session("Grocevb_CommandTimeout") = 30

Session("Grocevb_RuntimeUserName") = "sa"

Session("Grocevb_RuntimePassword") = ""

End Sub

Sub Session_OnEnd

set objImageLoader = Nothing

End Sub

</SCRIPT

建立ASP頁面

爲了連接到數據庫,並和ImageLoader這個動態鏈接庫通信,我們在Web項目裏建立了一個ASP文件。方法是在文件(File)菜單裏選擇新建(New)菜單項,在文件(Files)標簽卡中選擇ASP頁面圖標,在輸入框裏輸入文件名稱。我們把這個頁面命名爲default.asp。在default.asp 裏包含的代碼如列表 D所示。

列表 D: default.asp

<% Set dbConn = Server.CreateObject("ADODB.Connection")

dbConn.ConnectionTimeout = Session("Grocevb_ConnectionTimeout")

dbConn.CommandTimeout = Session("Grocevb_CommandTimeout")

dbConn.Open Session("Grocevb_ConnectionString"), Session("Grocevb_RuntimeUserName"), _

Session("Grocevb_RuntimePassword")

Set cmdTemp = Server.CreateObject("ADODB.Command")

Set rstProduct = Server.CreateObject("ADODB.Recordset")

cmdTemp.CommandText = "SELECT prod_id, prod_name, prod_desc, prod_unitprice, & _

" prod_unitquant, prod_imagetype " & _

"FROM Products ORDER BY prod_name"

cmdTemp.CommandType = 1

Set cmdTemp.ActiveConnection = dbConn

rstProduct.Open cmdTemp, , 0, 1

objImageLoader.DbName = "Grocevb"

objImageLoader.TableName = "Products"

objImageLoader.NameOfImageColumn = "prod_image"

objImageLoader.NameOfImageTypeColumn = "prod_imagetype"

objImageLoader.NameOfImageIdColumn = "prod_id"

objImageLoader.OpenConnection

%

<HTML

<HEAD

<TITLE從SQL Server裝載圖片的示例</TITLE

</HEAD

<BODY bgcolor="#FFFFFF" TOPMARGIN=8 LEFTMARGIN=4

<%Do While Not rstProduct.EOF %

<%ProdId = rstProduct("prod_id") %

<% objImageLoader.CreateTempImageFile(ProdId) %

<% FileName =

"images/" & objImageLoader.ImageFile(ProdId) %

<TABLE border=1 cellpadding=0 cellspacing=0 width=100%

<TABLE border=0 cellpadding=5 cellspacing=0 width=100% cols=2

<td width=30%

<IMG ALIGN=BOTTOM SRC= <% =FileName %

<p </p

<font size=2Image type: <% = rstProduct("prod_imagetype") %

</td

<td width=70%

<p align=center<font size=4<% =rstProduct("prod_name") %</font</p

<p align=center<% =rstProduct("prod_desc") %</p

</td

</TABLE

<p </p

<TABLE border=0 cellpadding=5, cellspacing=0 width=100% cols=2

<td width=50%

<p align=leftUnit quantity: <% = rstProduct("prod_unitquant") %</P

</td

<td width=50%

<p align=leftUnit price: <% =rstProduct("prod_unitprice") %</p

</td

</TABLE

</TABLE

<p </p

<% rstProduct.MoveNext %

<% Loop %

</BODY

</HTML

注意:類ImageLoader 裏定義的CreateTempImageFile 方法和ImageFile 屬性(只讀)需要圖片ID作爲參數。在這個例子裏,圖片ID就是表Products的主關鍵字(prod_id) 。所以, prod_id 的值必須傳遞給動態鏈接庫。

總結

在這篇文章裏,我們演示了一個方法,使用ActiveX動態鏈接庫和ASP,可以從微軟SQL Server服務器把圖片裝載到Web浏覽器。它已經表明,這個方法在快速開發、容易使用和自定義Web頁面的靈活上都有優勢。動態鏈接庫被用來連接數據庫,提取圖片數據,把圖片數據放入文件。ASP頁面則負責與SQL數據庫和動態鏈接庫通信。我們已經介紹了設置SQL數據庫和Web項目的操作過程。

雖然這篇文章裏的動態鏈接庫和數據庫的功能做了簡化,但這裏介紹的步驟對于其它任何強大複雜的Web項目都是有效的。

  建立Web項目和設置數據庫連接   在注冊了 ImageLoader 動態鏈接庫之後,我們就可以建立Web項目了。我們使用微軟Visual InterDev 1.0 建立ASP頁面以及到微軟SQL Server數據庫的數據連接。   首先,打開微軟Visual InterDev。在文件File 菜單裏,選擇新建(New)菜單項。在出現的對話框裏,選中Web項目向導,在項目名稱字段裏輸入ImageLoad 。單擊確定(OK),完成後面兩步,結束向導。   可以看到, Visual InterDev 在工作空間(Workspace)窗口裏自動地生成了一個文件,叫做Global.asa。在用戶第一次查看Web程序裏的頁面裏,就會自動生成這個文件。要連接SQL Server裏的數據庫,選擇項目 | 加入項目(Project | Add To Project),然後選擇數據連接(Data Connection)。這裏,選擇數據源對話框出現,我們必須定義一個數據源名稱(DSN)。   單擊新建(New)按鈕,在列出的可用數據驅動程序列表裏,選擇SQL Server,然後單擊下一步(Next)。接著,在輸入框裏輸入 Grocevb 作爲DSN。接下來的幾步很容易完成,不再詳述。   下面,出現了SQL Server 登錄對話框。輸入服務器名稱,登錄ID和口令,並單擊選項(Option)按鈕。從列出的可用數據庫列表裏,選擇Grocevb,單擊確定(OK)。在結束了全部以上步驟之後,就返回到了選擇數據源對話框。在這裏,從DSN列表裏單擊文件名 Grocevb.dsn,然後完成後面幾步結束這段操作。   現在,可以雙擊Global.asa,查看以上步驟在這個文件裏生成的代碼。代碼定義了連接SQL Server數據庫所必需的一些變量。   爲了初始化類 clsImageLoader ,必須在Global.asp的開始放兩行代碼。我們在列表 C裏列出了Global.asa裏的代碼。注意clsImageLoader 是一個會話範圍內的對象。   列表 C: Global.asa   <OBJECT RUNAT=Server SCOPE=Session ID=objImageLoader PROGID="ImageLoader.clsImageLoader"   </OBJECT   <SCRIPT LANGUAGE=VBScript RUNAT=Server   Sub Session_OnStart   Session("Grocevb_ConnectionString") = "DRIVER=SQL Server; SERVER=(local);   UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=JIA;   DATABASE=Grocevb;UseProcForPrepare=0"   Session("Grocevb_ConnectionTimeout") = 15   Session("Grocevb_CommandTimeout") = 30   Session("Grocevb_RuntimeUserName") = "sa"   Session("Grocevb_RuntimePassword") = ""   End Sub   Sub Session_OnEnd   set objImageLoader = Nothing   End Sub   </SCRIPT   建立ASP頁面   爲了連接到數據庫,並和ImageLoader這個動態鏈接庫通信,我們在Web項目裏建立了一個ASP文件。方法是在文件(File)菜單裏選擇新建(New)菜單項,在文件(Files)標簽卡中選擇ASP頁面圖標,在輸入框裏輸入文件名稱。我們把這個頁面命名爲default.asp。在default.asp 裏包含的代碼如列表 D所示。   列表 D: default.asp   <% Set dbConn = Server.CreateObject("ADODB.Connection")   dbConn.ConnectionTimeout = Session("Grocevb_ConnectionTimeout")   dbConn.CommandTimeout = Session("Grocevb_CommandTimeout")   dbConn.Open Session("Grocevb_ConnectionString"), Session("Grocevb_RuntimeUserName"), _   Session("Grocevb_RuntimePassword")   Set cmdTemp = Server.CreateObject("ADODB.Command")   Set rstProduct = Server.CreateObject("ADODB.Recordset")   cmdTemp.CommandText = "SELECT prod_id, prod_name, prod_desc, prod_unitprice, & _   " prod_unitquant, prod_imagetype " & _   "FROM Products ORDER BY prod_name"   cmdTemp.CommandType = 1   Set cmdTemp.ActiveConnection = dbConn   rstProduct.Open cmdTemp, , 0, 1   objImageLoader.DbName = "Grocevb"   objImageLoader.TableName = "Products"   objImageLoader.NameOfImageColumn = "prod_image"   objImageLoader.NameOfImageTypeColumn = "prod_imagetype"   objImageLoader.NameOfImageIdColumn = "prod_id"   objImageLoader.OpenConnection   %   <HTML   <HEAD   <TITLE從SQL Server裝載圖片的示例</TITLE   </HEAD   <BODY bgcolor="#FFFFFF" TOPMARGIN=8 LEFTMARGIN=4   <%Do While Not rstProduct.EOF %   <%ProdId = rstProduct("prod_id") %   <% objImageLoader.CreateTempImageFile(ProdId) %   <% FileName =   "images/" & objImageLoader.ImageFile(ProdId) %   <TABLE border=1 cellpadding=0 cellspacing=0 width=100%   <TABLE border=0 cellpadding=5 cellspacing=0 width=100% cols=2   <td width=30%   <IMG ALIGN=BOTTOM SRC= <% =FileName %   <p </p   <font size=2Image type: <% = rstProduct("prod_imagetype") %   </td   <td width=70%   <p align=center<font size=4<% =rstProduct("prod_name") %</font</p   <p align=center<% =rstProduct("prod_desc") %</p   </td   </TABLE   <p </p   <TABLE border=0 cellpadding=5, cellspacing=0 width=100% cols=2   <td width=50%   <p align=leftUnit quantity: <% = rstProduct("prod_unitquant") %</P   </td   <td width=50%   <p align=leftUnit price: <% =rstProduct("prod_unitprice") %</p   </td   </TABLE   </TABLE   <p </p   <% rstProduct.MoveNext %   <% Loop %   </BODY   </HTML   注意:類ImageLoader 裏定義的CreateTempImageFile 方法和ImageFile 屬性(只讀)需要圖片ID作爲參數。在這個例子裏,圖片ID就是表Products的主關鍵字(prod_id) 。所以, prod_id 的值必須傳遞給動態鏈接庫。   總結   在這篇文章裏,我們演示了一個方法,使用ActiveX動態鏈接庫和ASP,可以從微軟SQL Server服務器把圖片裝載到Web浏覽器。它已經表明,這個方法在快速開發、容易使用和自定義Web頁面的靈活上都有優勢。動態鏈接庫被用來連接數據庫,提取圖片數據,把圖片數據放入文件。ASP頁面則負責與SQL數據庫和動態鏈接庫通信。我們已經介紹了設置SQL數據庫和Web項目的操作過程。   雖然這篇文章裏的動態鏈接庫和數據庫的功能做了簡化,但這裏介紹的步驟對于其它任何強大複雜的Web項目都是有效的。      
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有