ASP進(jìn)階圖文說明教程:數(shù)據(jù)庫版本的留言簿
發(fā)表時(shí)間:2024-02-06 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在前面我們介紹了文件版本的留言簿,現(xiàn)在我們不妨來設(shè)想一下:如果留言文件里面的留言很多,而你又急于想尋找其中的某條留言時(shí),這時(shí)打開txt留言文件,對著一段段的留言記錄,你敢擔(dān)保你不會(huì)當(dāng)場暈倒嗎?而且文件留言簿最令人討厭還遠(yuǎn)不只是這個(gè)原因,更氣人的是:譬如你已經(jīng)找到了你要找的留言,而且是非要將其刪除不...
在前面我們介紹了文件版本的留言簿,現(xiàn)在我們不妨來設(shè)想一下:如果留言文件里面的留言很多,而你又急于想尋找其中的某條留言時(shí),這時(shí)打開txt留言文件,對著一段段的留言記錄,你敢擔(dān)保你不會(huì)當(dāng)場暈倒嗎?而且文件留言簿最令人討厭還遠(yuǎn)不只是這個(gè)原因,更氣人的是:譬如你已經(jīng)找到了你要找的留言,而且是非要將其刪除不可(當(dāng)然是因?yàn)槟嵌瘟粞跃购敛涣羟榈赝隳樕夏ê诘木売衫玻敲创藭r(shí)其余想對你大發(fā)贊賞之言的朋友,就會(huì)因?yàn)槟阏谧隽粞詣h除的操作而不能留言了。看,這有多可惜!不過,你也無須嘆氣,雖然留言文件不能供多人共用,但是改成數(shù)據(jù)庫來管理留言記錄,當(dāng)你在做刪除留言的期間,訪問者的留言還是可以加進(jìn)來的。既然數(shù)據(jù)庫留言簿能對你的系統(tǒng)如此照顧入微,我們現(xiàn)在就事不宜遲,立即來揭開她的廬山真面目。
步驟二:設(shè)計(jì)一個(gè)留言表單的網(wǎng)頁也同樣是不可或缺的。(如:guestbook0.htm)。
步驟三:又到編寫處理留言的ASP程序了。(我們可以將下述代碼COPY下來,然后另存為manage0a.asp文件。)
$#@60; !--#include file="adovbs.inc" --$#@62;
調(diào)用adovbs.inc文件,所謂inc 文件顧名思義是include file的意思,adovbs.inc是IIS/PWS所提供的文件,存放著ADO相關(guān)常數(shù)的定義,使用inc文件可以使我們的程序,增加可讀性,更易于開發(fā)和維護(hù)。
$#@60; % Function SqlStr( data )
SqlStr = "" & Replace( data ", "" ) & ""
End Function
這里用了SqlStr函數(shù),其作用是將數(shù)據(jù)中的一個(gè)單引號(hào)改成兩個(gè)單引號(hào),并且在前后加上單引號(hào)。之所以要用該函數(shù)是由于上網(wǎng)者輸入的數(shù)據(jù)必須以用單引號(hào)括起來的形式輸入的數(shù)據(jù)與Insert Into命令組合在一起,但是如果用戶輸入的數(shù)據(jù)含有單引號(hào),則輸入的數(shù)據(jù)將會(huì)產(chǎn)生錯(cuò)誤,因此輸入的數(shù)據(jù)必須經(jīng)過SqlStr的切換(將單引號(hào)切換成兩個(gè)單引號(hào))才是正確的。
Name = Request("Name")
Tel=Request("Tel")
Email = Request("Email")
Subject = Request("Subject")
Memo = Request("Memo")
從留言表單取得數(shù)據(jù)
If Name = "" Or Tel="" Or Email = "" Or Subject = "" Or Memo = "" Then Response.Write "輸入框不能為空白!"
Response.End
End If
檢查表單的各輸入框是否有信息輸入,若留有空輸入框沒填則顯示說明信息:"輸入框不能為空白!" 并停止執(zhí)行下面的程序。
Set conn = Server.CreateObject("ADODB.Connection")
用Server.CreateObject取得對象ADODB.Connection。因?yàn)樵贏SP中,如果要訪問數(shù)據(jù)必須首先創(chuàng)建與數(shù)據(jù)庫的鏈接,因此建立連接是存取Web數(shù)據(jù)庫不可缺少的步驟,執(zhí)行以上語句之后,conn便是一個(gè)Connection對象。
DBPath = Server.MapPath("book0.mdb")
通過調(diào)用服務(wù)器對象的MapPath方法來獲取book0.mdb的完整路徑。
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
因?yàn)槲覀兿氪蜷_的是Access(.mdb)數(shù)據(jù)庫,所以我們要透過Access的ODBC驅(qū)動(dòng)程序{Microsoft Access Driver (*.mdb)}來存取數(shù)據(jù)庫,dbp參數(shù)則是用來指定想打開的數(shù)據(jù)庫文件,因?yàn)樗仨毷峭暾窂矫Q,所以我們上一語句用了Server.MapPath 函數(shù) 。
Name = Left( Name, 40 )
Tel = Left(Tel,10)
Email = Left( Email, 80 )
Subject = Left( Subject, 127 )
截短輸入到各字段里數(shù)據(jù)的長度,以避免因輸入到某一字段中的數(shù)據(jù)超長而引發(fā)的錯(cuò)誤,當(dāng)然假如我們將數(shù)據(jù)庫book0.mdb中的各字段的數(shù)據(jù)類型都有設(shè)為“備注”,我們則再無需擔(dān)心上網(wǎng)者所輸入的數(shù)據(jù)有多長。
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"數(shù)據(jù)表中增加一個(gè)數(shù)據(jù)記錄,然后把其中的各字段 (姓名, 電話, Email, 主題, 留言)分別設(shè)置成從留言表單上取下的對應(yīng)的數(shù)據(jù)。
conn.Execute sql
執(zhí)行sql指令。
%$#@62;