当有一天,你的心情突然变得很坏,但是巧合的是,在你的留言簿中你的网友留了一句很让你振奋的话,于是你很快就重拾了快乐的心情。但是在不久后你又一次心情变坏,但是这次却没有上次那么幸运,因为没有人给予你鼓励,于是你自然就想再看一看上次那句令你很受振奋的话。这时你就会想:假如我的留言簿有留言查询功能就好了!
为了能达成你的心愿,于是我决定在本章教程为你解说具有留言查询功能的留言簿程序。在讲解之前,让我们还是先来学习将在源程序中用到的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
%>
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器