ASP進階教程:留言查詢功能(一)

來源:互聯網
上載者:User
教程   當有一天,你的心情突然變得很壞,但是巧合的是,在你的留言簿中你的網友留了一句很讓你振奮的話,於是你很快就重拾了快樂的心情。但是在不久後你又一次心情變壞,但是這次卻沒有上次那麼幸運,因為沒有人給予你鼓勵,於是你自然就想再看一看上次那句令你很受振奮的話。這時你就會想:假如我的留言簿有留言查詢功能就好了!
  
  
    為了能達成你的心愿,於是我決定在本章教程為你解說具有留言查詢功能的留言簿程式。在講解之前,讓我們還是先來學習將在來源程式中用到的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
  %>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.