快捷搜索:

ASP进阶教程Ⅸ:留言查询功能(一)

当有一天,你的心情忽然变得很坏,然则巧合的是,在你的留言簿中你的网友留了一句很让你振奋的话,于是你很快就重拾了快乐的心情。然则在不久后你又一次心情变坏,然则此次却没有上次那么幸运,由于没有人给予你鼓励,于是你自然就想再看一看上次那句令你很受振奋的话。这时你就会想:要是我的留言簿有留言查询功能就好了!

为了能杀青你的心愿,于是我抉择在本章教程为你讲解具有留言查询功能的留言簿法度榜样。在解说之前,让我们照样先来进修将在源法度榜样顶用到的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 = WordStr(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)。

"

Response.Write "

"

For i=0 to rs.Fields.Count-1

Response.WRITE "

" & rs.Fields(i).Name & ""

Next

Response.Write ""

'" & rs.Fields(i).Name & "表示显示数据表的“字段昂首”

While Not rs.EOF

Response.Write "

"

For i=0 to rs.Fields.Count-1

Response.WRITE "

" & rs.Fields(i).Value & ""

Next

Response.Write ""

rs.MoveNext

Wend

Response.Write ""

' " & rs.Fields(i).Value & "表示显示数据表的“数据字段内容”

End Sub

%>

ASP进阶教程Ⅸ:留言查询功能(二)

我们接上一部分继承解说若何使用Command工具来履行SQL敕令,实现“留言记录日期查询”和“留言簿以前五天留言记录查询”。但在利用Command工具来履行SQL敕令之前我们必须在留言数据库中先建立查询,要是我们要查询的是“留言簿以前五天留言记录”,那么在留言数据库中建立查询的详细措施如下所示。(对付数据库,在Access中可以建立五种不合类型的查询,由于我们要查询两个日期之间的留言记录,是以我在这里只以“应用‘设计’视图建立参数查询”为例,当然你也可以“应用领导建立查询”。应用“设计”视图建立查询要比应用领导机动得多,例如,在“设计”视图中,既可以建立像“选择查询”之类的简单查询,又可以建立像“参数查询”和“操作查询”之类的繁杂查询,而且在“查询设计网格”中既能够增添、移动、插入和删除字段,也能够设置准则和排次序序,谋略总和和匀称值,等等)

在Access中,应用‘设计’视图建立参数查询:

一、打开留言数据库,在“数据库”窗口中单击“查询”选项卡,然后单击“新建”按钮 。

二、在“新建查询”对话框中,单击“设计视图”,然后单击“确定”按钮。

三、在“显示表”对话框中,选择“表”选项卡,然后单击“添加按钮或者双击“guestbook”表的名称,将它添加到“查询”窗口中,然后关闭“显示表”的对话框。

四、在“guestbook”表的字段列表中,单击“ID”字段的字段名,按住鼠标不放,将它拖到“查询设计网格”的第一列。同样,可以将“姓名”、“电话”、“EMAIL”、“主题”、“留言”和“光阴”字段的字段名依次拖到“查询设计网格”的其它各列中。

五、在作为参数应用的“光阴”字段下的“准则”单元格中,键入下列表达式:

Between[请键入开始日期]And[请键入停止日期]。

六、单击对象栏上的“保存”按钮保存查询,这时会弹出一个“另存为”的对话框,我们在“另存为”对话框中输入该查询表的名称“留言记录日期查询”,然后单击“确定”按钮。

在留言数据库中建立了查询后,我们接下来将使用Command工具来履行日期查询的SQL敕令编写如下(Date.asp):

返回留言查询

同理,使用Command工具来履行SQL敕令,实现“留言簿以前五天留言记录查询”的道理与上述实现“留言记录日期查询”的道理是一样的,我们可以编写如下所示:

Set conn = Server.CreateObject("ADODB.Connection")

DBPath = Server.MapPath("book2.mdb")

conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath

Set cmd = Server.CreateObject("ADODB.Command")

Set cmd.ActiveConnection = conn

cmd.CommandText = "留言簿以前五天留言记录"

Set rs = cmd.Execute

Search rs

至此,两种实现查询的措施我们都已进修过了,大年夜家能说出它们存在着什么差别吗?

打个比方,假如我们直接把某一个SQL敕令写在ASP法度榜样中,要知道该敕令是否精确无误,我们必须启动浏览器浏览这个法度榜样才能够测试出来,若SQL敕令有错,我们必须改动ASP法度榜样,然后再从新浏览直到精确为止;假如我们使用Command工具来履行SQL敕令,则必须直到留言数据库中建立的查询完全精确才将SQL敕令存储成“查询工具”,于是在ASP法度榜样中我们只要将这个查询工具的名称指定给Command工具的CommandText参数,即可精确无误地履行SQL敕令。

您可能还会对下面的文章感兴趣: