當有一天,你的心情突然變得很壞,但是巧合的是,在你的留言簿中你的網友留了一句很讓你振奮的話,于是你很快就重拾了快樂的心情。但是在不久后你又一次心情變壞,但是這次卻沒有上次那么幸運,因為沒有人給予你鼓勵,于是你自然就想再看一看上次那句令你很受振奮的話。這時你就會想:假如我的留言簿有留言查詢功能就好了!
為了能達成你的心愿,于是我決定在本章教程為你解說具有留言查詢功能的留言簿程序。在講解之前,讓我們還是先來學習將在源程序中用到的COMMAND對象。
首先讓我們先來了解一下Command對象所提供的屬性和方法以及它們的相應功能
ActiveConnection屬性--建立與Connection通道的鏈接關系 CommandText屬性--指定數據查詢信息 CommandTimeout屬性--開始執行數據查詢后允許繼續執行的最長時間 CommandType屬性--指定數據查詢信息的類型 Prepared屬性--指定數據查詢信息是否要先行編譯 CreateParameter方法--建立一個新的參數對象 Execute 方法--對數據庫提出數據查詢
Command對象也是ADO對象集合的一員,它主要用來控制對數據庫發出的請求信息,告訴數據庫:“要哪個數據表里的數據?要什么字段內的數據?數據必須符合什么限制?請把這些符合我要求的數據全部存放在Recordset對象內返回回來!”那么說到底,Command對象的功能就是執行SQL(Structured Query Language結構式查詢語言,是用于對存放在計算機數據庫中的數據進行組織、管理和檢索的一種工具;是一種特定類型的數據庫--關系數據庫)命令。假如你是一位比較細心的人,你一定還記得我在第三章中其實就已經用上了SQL命令,于是你就會對我發問:“你當時并沒有用到Command對象呀?”
確實,沒有Command對象我們也一樣可以執行SQL命令。我們利用Connection對象或是利用Recordset對象同樣可以執行SQL命令。方法如下所示:
Set rs = conn.Execute(SQL命令) ' 利用Connection對象執行Select SQL命令,然后將結果指定給Recordset對象。 conn.Execute SQL命令 ' 利用Connection對象執行數據操作的SQL命令。 Set rs = Server.CreateObject("ADODB.Recordset") rs.Open SQL命令,conn
' 先建立Recordset對象,再執行SQL命令選取數據。 利用Command對象又是如何來執行SQL命令的呢?大家請看: Set cmd = Server.CreateObject("ADODB.Command") Set cmd.ActiveConnection = conn cmd.CommandText = sql Set rs = cmd.Execute
' 可見利用Command對象來執行SQL命令,得先將Connection對象及SQL命令設置給對象Command的ActiveConnection及CommandText屬性,然后才執行cmd.Execute函數。
由上述我們可以知道,原來使用Recordset對象和使用Command對象來執行SQL命令,本質都是一樣的。既然如此,那么我們為什么還要利用Command對象呢?為了說明這個問題,我分別用兩種不同的方法來為留言簿添加留言查詢功能,其中查詢“留言簿過去五天留言記錄”和“留言記錄日期查詢”是利用Command對象來執行SQL命令的,而“留言者姓名查詢”和“最新十條留言記錄”的查詢則是利用Recordset對象來執行SQL命令。
講了這許多也該入正題了,我們首先來學習的是利用Recordset對象來實現“留言者姓名查詢”和“最新十條留言記錄”的查詢。以下我們還是通過分步驟的方法來進行說明。
步驟一: 首先我們得設計一個留言查詢的界面(Datesearch.asp),如下圖所示:
步驟二:利用Recordset對象來執行SQL命令,實現“最新十條留言記錄”的查詢。 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”字段從大到小排序。因為在數據庫中我將ID字段的數據類型設為“自動編號”,留言記錄的ID將按先后從小到大進行排序,所以要查詢最新的十條留言即是查詢最后的十條ID的記錄。 Set rs = conn.Execute( sql )
利用Recordset對象來執行SQL命令,實現“留言者姓名”的查詢的原理與上述一致,程序如下所示:
namesearch = request.form("name") namesearch = Replace(namesearch,"'","''") '還記得我在第三章中介紹SqlStr函數時的說明嗎?忘了就到回去看看吧。 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 )
步驟三:設計查詢結果的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 & "表示顯示數據表的“字段抬頭” 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 & "表示顯示數據表的“數據字段內容” End Sub %>
|