標籤:http io ar os 使用 sp 檔案 資料 on
在前面我們介紹了檔案版本的留言簿,現在我們不妨來設想一下:如果留言檔案裡面的留言很多,而你又急於想尋找其中的某條留言時,這時開啟txt留言檔案,對著一段段的留言記錄,你敢擔保你不會當場暈倒嗎?而且檔案留言簿最令人討厭還遠不只是這個原因,更氣人的是:譬如你已經找到了你要找的留言,而且是非要將其刪除不可(當然是因為那段留言竟毫不留情地往你臉上抹黑的緣由啦),那麼此時其餘想對你大發讚賞之言的朋友,就會因為你正在做留言刪除的操作而不能留言了。看,這有多可惜!不過,你也無須歎氣,雖然留言檔案不能供多人共用,但是改成資料庫來管理留言記錄,當你在做刪除留言的期間,訪問者的留言還是可以加進來的。既然資料庫留言簿能對你的系統如此照顧入微,我們現在就事不宜遲,立即來揭開她的廬山真面目。
至於如何建立自已的資料庫版本的留言簿,上海治療陽痿醫院程式還是通過分步驟的方法來說明吧。要編寫一個資料庫版本的留言簿,我們大致可以從以下三個步驟來完成。
步驟一:使用Access先建立用來存放留言的資料表。(當然,如果你想使你的資料庫能很好地工作在高需求、高品質的Web應用程式的客戶-伺服器資料庫,而且無論是在效能還是在可靠性上都能經受得起嚴格的考驗,那麼你最好是用伺服器等級的資料庫,如:SQL server、Oracle等。對於非伺服器等級的資料庫,我推薦使用Access中文版來建立。凡是用Access來建立的資料表,都是以.mdb為尾碼名,如:book0.mdb。)
Access的介面非常友好,操作也非常簡便,相信聰明的讀者們,即使以往從未用過Access的,只要動手試試,也定能很快對其駑駕自如,所以我在這裡也就不再贅述(當然也不排除有那麼幾分懶惰的成份)。
步驟二:設計一個留言表單的網頁也同樣是不可或缺的。(如:guestbook0.htm)。
步驟三:又到編寫處理留言的ASP程式了。(我們可以將下述代碼COPY下來,然後另存新檔manage0a.asp檔案。)
$#@60; !--#include file="adovbs.inc" --$#@62;
調用adovbs.inc檔案,所謂inc 檔案顧名思義是include file的意思,adovbs.inc是IIS/PWS所提供的檔案,存放著ADO相關常數的定義,使用inc檔案可以使我們的程式,增加可讀性,更易於開發和維護。
$#@60; % Function SqlStr( data )
SqlStr = "" & Replace( data ", "" ) & ""
End Function
這裡用了SqlStr函數,其作用是將資料中的一個單引號改成兩個單引號,並且在前後加上單引號。之所以要用該函數是由於上網者輸入的資料必須以用單引號括起來的形式輸入的資料與Insert Into命令組合在一起,但是如果使用者輸入的資料含有單引號,則輸入的資料將會產生錯誤,因此輸入的資料必須經過SqlStr的切換(將單引號切換成兩個單引號)才是正確的。
Name = Request("Name")
Tel=Request("Tel")
Email = Request("Email")
Subject = Request("Subject")
Memo = Request("Memo")
從留言表單取得資料
If Name = "" Or Tel="" Or Email = "" Or Subject = "" Or Memo = "" Then Response.Write "輸入框不可為空白!"
Response.End
End If
檢查表單的各輸入框是否有資訊輸入,若留有空輸入框沒填則顯示說明資訊:"輸入框不可為空白!" 並停止執行下面的程式。
Set conn = Server.CreateObject("ADODB.Connection")
用Server.CreateObject取得對象ADODB.Connection。因為在ASP中,如果要訪問資料必須首先建立與資料庫的連結,因此建立串連是存取Web資料庫不可缺少的步驟,執行以上語句之後,conn便是一個Connection對象。
DBPath = Server.MapPath("book0.mdb")
通過調用伺服器對象的MapPath方法來擷取book0.mdb的完整路徑。
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
因為我們想開啟的是Access(.mdb)資料庫,所以我們要透過Access的ODBC驅動程式{Microsoft Access Driver (*.mdb)}來存取資料庫,dbp參數則是用來指定想開啟的資料庫檔案,因為它必須是完整路徑名稱,所以我們上一語句用了Server.MapPath 函數 。
Name = Left( Name, 40 )
Tel = Left(Tel,10)
Email = Left( Email, 80 )
Subject = Left( Subject, 127 )
截短輸入到各欄位裡資料的長度,以避免因輸入到某一欄位中的資料超長而引發的錯誤,當然假如我們將資料庫book0.mdb中的各欄位的資料類型都有設為“備忘”,我們則再無需擔心上網者所輸入的資料有多長。
sql = "Insert Into GuestBook (姓名, 電話, Email, 主題, 留言) Values( "
sql = sql & SqlStr(Name) & ", "
sql = sql & SqlStr(Tel) & ", "
sql = sql & SqlStr(Email) & ", "
sql = sql & SqlStr(Subject) & ", "
sql = sql & SqlStr(Memo) & ")"
在"guestbook"資料表中增加一個資料記錄,然後把其中的各欄位 (姓名, 電話, Email, 主題, 留言)分別設定成從留言表單上取下的對應的資料。
conn.Execute sql
執行sql指令。
%$#@62;
ASP進階教程Ⅷ:資料庫版本的留言簿