明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

ASP進階圖文說明教程:留言查詢技巧(一)

[摘要]當有一天,你的心情突然變得很壞,但是巧合的是,在你的留言簿中你的網(wǎng)友留了一句很讓你振奮的話,于是你很快就重拾了快樂的心情。但是在不久后你又一次心情變壞,但是這次卻沒有上次那么幸運,因為沒有人給予你鼓勵,于是你自然就想再看一看上次那句令你很受振奮的話。這時你就會想:假如我的留言簿有留言查詢功能就好了...

     當有一天,你的心情突然變得很壞,但是巧合的是,在你的留言簿中你的網(wǎng)友留了一句很讓你振奮的話,于是你很快就重拾了快樂的心情。但是在不久后你又一次心情變壞,但是這次卻沒有上次那么幸運,因為沒有人給予你鼓勵,于是你自然就想再看一看上次那句令你很受振奮的話。這時你就會想:假如我的留言簿有留言查詢功能就好了!


  為了能達成你的心愿,于是我決定在本章教程為你解說具有留言查詢功能的留言簿程序。在講解之前,讓我們還是先來學習將在源程序中用到的COMMAND對象。
  

  首先讓我們先來了解一下Command對象所提供的屬性和方法以及它們的相應功能


ActiveConnection屬性--建立與Connection通道的鏈接關系
CommandText屬性--指定數(shù)據(jù)查詢信息
CommandTimeout屬性--開始執(zhí)行數(shù)據(jù)查詢后允許繼續(xù)執(zhí)行的最長時間
CommandType屬性--指定數(shù)據(jù)查詢信息的類型
Prepared屬性--指定數(shù)據(jù)查詢信息是否要先行編譯
CreateParameter方法--建立一個新的參數(shù)對象
Execute 方法--對數(shù)據(jù)庫提出數(shù)據(jù)查詢


  Command對象也是ADO對象集合的一員,它主要用來控制對數(shù)據(jù)庫發(fā)出的請求信息,告訴數(shù)據(jù)庫:“要哪個數(shù)據(jù)表里的數(shù)據(jù)?要什么字段內(nèi)的數(shù)據(jù)?數(shù)據(jù)必須符合什么限制?請把這些符合我要求的數(shù)據(jù)全部存放在Recordset對象內(nèi)返回回來!”那么說到底,Command對象的功能就是執(zhí)行SQL(Structured Query Language結(jié)構(gòu)式查詢語言,是用于對存放在計算機數(shù)據(jù)庫中的數(shù)據(jù)進行組織、管理和檢索的一種工具;是一種特定類型的數(shù)據(jù)庫--關系數(shù)據(jù)庫)命令。假如你是一位比較細心的人,你一定還記得我在第三章中其實就已經(jīng)用上了SQL命令,于是你就會對我發(fā)問:“你當時并沒有用到Command對象呀?”


  確實,沒有Command對象我們也一樣可以執(zhí)行SQL命令。我們利用Connection對象或是利用Recordset對象同樣可以執(zhí)行SQL命令。方法如下所示:



Set rs = conn.Execute(SQL命令)
' 利用Connection對象執(zhí)行Select SQL命令,然后將結(jié)果指定給Recordset對象。
conn.Execute SQL命令
' 利用Connection對象執(zhí)行數(shù)據(jù)操作的SQL命令。
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL命令,conn


' 先建立Recordset對象,再執(zhí)行SQL命令選取數(shù)據(jù)。
利用Command對象又是如何來執(zhí)行SQL命令的呢?大家請看:
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = sql
Set rs = cmd.Execute


' 可見利用Command對象來執(zhí)行SQL命令,得先將Connection對象及SQL命令設置給對象Command的ActiveConnection及CommandText屬性,然后才執(zhí)行cmd.Execute函數(shù)。


  由上述我們可以知道,原來使用Recordset對象和使用Command對象來執(zhí)行SQL命令,本質(zhì)都是一樣的。既然如此,那么我們?yōu)槭裁催要利用Command對象呢?為了說明這個問題,我分別用兩種不同的方法來為留言簿添加留言查詢功能,其中查詢“留言簿過去五天留言記錄”和“留言記錄日期查詢”是利用Command對象來執(zhí)行SQL命令的,而“留言者姓名查詢”和“最新十條留言記錄”的查詢則是利用Recordset對象來執(zhí)行SQL命令。

  講了這許多也該入正題了,我們首先來學習的是利用Recordset對象來實現(xiàn)“留言者姓名查詢”和“最新十條留言記錄”的查詢。以下我們還是通過分步驟的方法來進行說明。

步驟一: 首先我們得設計一個留言查詢的界面(Datesearch.asp),如下圖所示:





步驟二:利用Recordset對象來執(zhí)行SQL命令,實現(xiàn)“最新十條留言記錄”的查詢。
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("book2.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
sql ="select top 10 * from guestbook order by ID Desc"


  這里用“ order by ID Desc”表示按照“ID”字段從大到小排序。因為在數(shù)據(jù)庫中我將ID字段的數(shù)據(jù)類型設為“自動編號”,留言記錄的ID將按先后從小到大進行排序,所以要查詢最新的十條留言即是查詢最后的十條ID的記錄。
Set rs = conn.Execute( sql )

  利用Recordset對象來執(zhí)行SQL命令,實現(xiàn)“留言者姓名”的查詢的原理與上述一致,程序如下所示:


namesearch = request.form("name")
namesearch = Replace(namesearch,"'","''")
'還記得我在第三章中介紹SqlStr函數(shù)時的說明嗎?忘了就到回去看看吧。
Set conn = Server.CreateObject("ADODB.Connection") DBPath =Server.MapPath("book2.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
sql ="select * from guestbook where 姓名 = '"&namesearch&"' order by ID Desc"
Set rs = conn.Execute( sql )


步驟三:設計查詢結(jié)果的Web頁面(Search.asp)。


< %
Sub Search( rs )
Response.Write "< CENTER>< table border=2 width=90% cellpadding=2 cellspacing=2 bordercolorlight=#000000 bordercolordark=#FFFFFF bordercolor=#FFFFFF bgcolor=#FFFFFF align=center>"
Response.Write "< TR BGCOLOR=#33CCCC>"
For i=0 to rs.Fields.Count-1
Response.WRITE "< TD>" & rs.Fields(i).Name & "< /TD>"
Next
Response.Write "< /TR>"
'" & rs.Fields(i).Name & "表示顯示數(shù)據(jù)表的“字段抬頭”
While Not rs.EOF
Response.Write "< TR>"
For i=0 to rs.Fields.Count-1
Response.WRITE "< TD>" & rs.Fields(i).Value & "< /TD>"
Next
Response.Write "< /TR>"
rs.MoveNext
Wend
Response.Write "< /TABLE>< /CENTER>"
' " & rs.Fields(i).Value & "表示顯示數(shù)據(jù)表的“數(shù)據(jù)字段內(nèi)容”
End Sub
%>