文章詳情頁(yè)
用SQL Server為Web瀏覽器提供圖像(四)(轉(zhuǎn))
瀏覽:116日期:2023-10-28 13:22:10
建立Web項(xiàng)目和設(shè)置數(shù)據(jù)庫(kù)連接在注冊(cè)了 ImageLoader 動(dòng)態(tài)鏈接庫(kù)之后,我們就可以建立Web項(xiàng)目了。我們使用微軟Visual InterDev 1.0 建立ASP頁(yè)面以及到微軟SQL Server數(shù)據(jù)庫(kù)的數(shù)據(jù)連接。首先,打開(kāi)微軟Visual InterDev。在文件File 菜單里,選擇新建(New)菜單項(xiàng)。在出現(xiàn)的對(duì)話框里,選中Web項(xiàng)目向?qū)В陧?xiàng)目名稱字段里輸入ImageLoad 。單擊確定(OK),完成后面兩步,結(jié)束向?qū)А?梢钥吹剑?Visual InterDev 在工作空間(Workspace)窗口里自動(dòng)地生成了一個(gè)文件,叫做Global.asa。在用戶第一次查看Web程序里的頁(yè)面里,就會(huì)自動(dòng)生成這個(gè)文件。要連接SQL Server里的數(shù)據(jù)庫(kù),選擇項(xiàng)目 | 加入項(xiàng)目(Project | Add To Project),然后選擇數(shù)據(jù)連接(Data Connection)。這里,選擇數(shù)據(jù)源對(duì)話框出現(xiàn),我們必須定義一個(gè)數(shù)據(jù)源名稱(DSN)。單擊新建(New)按鈕,在列出的可用數(shù)據(jù)驅(qū)動(dòng)程序列表里,選擇SQL Server,然后單擊下一步(Next)。接著,在輸入框里輸入 Grocevb 作為DSN。接下來(lái)的幾步很容易完成,不再詳述。下面,出現(xiàn)了SQL Server 登錄對(duì)話框。輸入服務(wù)器名稱,登錄ID和口令,并單擊選項(xiàng)(Option)按鈕。從列出的可用數(shù)據(jù)庫(kù)列表里,選擇Grocevb,單擊確定(OK)。在結(jié)束了全部以上步驟之后,就返回到了選擇數(shù)據(jù)源對(duì)話框。在這里,從DSN列表里單擊文件名 Grocevb.dsn,然后完成后面幾步結(jié)束這段操作。 現(xiàn)在,可以雙擊Global.asa,查看以上步驟在這個(gè)文件里生成的代碼。代碼定義了連接SQL Server數(shù)據(jù)庫(kù)所必需的一些變量。為了初始化類 clsImageLoader ,必須在Global.asp的開(kāi)始放兩行代碼。我們?cè)诹斜?C里列出了Global.asa里的代碼。注意clsImageLoader 是一個(gè)會(huì)話范圍內(nèi)的對(duì)象。列表 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 SubSub Session_OnEnd;;set objImageLoader = NothingEnd Sub</SCRIPT>建立ASP頁(yè)面為了連接到數(shù)據(jù)庫(kù),并和ImageLoader這個(gè)動(dòng)態(tài)鏈接庫(kù)通信,我們?cè)赪eb項(xiàng)目里建立了一個(gè)ASP文件。方法是在文件(File)菜單里選擇新建(New)菜單項(xiàng),在文件(Files)標(biāo)簽卡中選擇ASP頁(yè)面圖標(biāo),在輸入框里輸入文件名稱。我們把這個(gè)頁(yè)面命名為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=2>Image 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=left>Unit quantity: <% = rstProduct("prod_unitquant") %></P>;;;;;;</td>;;;;;;<td width=50%>;<p align=left>Unit price: <% =rstProduct("prod_unitprice") %></p>;;;;;;</td>;;;;;;;;</TABLE>;;</TABLE>;;<p> </p><% rstProduct.MoveNext %><% Loop %></BODY></HTML>注意:類ImageLoader 里定義的CreateTempImageFile 方法和ImageFile 屬性(只讀)需要圖片ID作為參數(shù)。在這個(gè)例子里,圖片ID就是表Products的主關(guān)鍵字(prod_id) 。所以, prod_id 的值必須傳遞給動(dòng)態(tài)鏈接庫(kù)。總結(jié)在這篇文章里,我們演示了一個(gè)方法,使用ActiveX動(dòng)態(tài)鏈接庫(kù)和ASP,可以從微軟SQL Server服務(wù)器把圖片裝載到Web瀏覽器。它已經(jīng)表明,這個(gè)方法在快速開(kāi)發(fā)、容易使用和自定義Web頁(yè)面的靈活上都有優(yōu)勢(shì)。動(dòng)態(tài)鏈接庫(kù)被用來(lái)連接數(shù)據(jù)庫(kù),提取圖片數(shù)據(jù),把圖片數(shù)據(jù)放入文件。ASP頁(yè)面則負(fù)責(zé)與SQL數(shù)據(jù)庫(kù)和動(dòng)態(tài)鏈接庫(kù)通信。我們已經(jīng)介紹了設(shè)置SQL數(shù)據(jù)庫(kù)和Web項(xiàng)目的操作過(guò)程。 雖然這篇文章里的動(dòng)態(tài)鏈接庫(kù)和數(shù)據(jù)庫(kù)的功能做了簡(jiǎn)化,但這里介紹的步驟對(duì)于其它任何強(qiáng)大復(fù)雜的Web項(xiàng)目都是有效的。;;
標(biāo)簽:
Sql Server
數(shù)據(jù)庫(kù)
排行榜
