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