仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 439|回复: 6
打印 上一主题 下一主题

[学习教程] ASP教程之ASP进阶教程Ⅸ:留言查询功效(一)

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:26:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!当有一天,你的心境俄然变得很坏,可是偶合的是,在你的留言簿中你的网友留了一句很让你奋发的话,因而你很快就重拾了康乐的心境。可是在不久后你又一次心境变坏,可是此次却没有前次那末侥幸,由于没有人赐与你勉励,因而你天然就想再看一看前次那句令你很受奋发的话。这时候你就会想:假设我的留言簿有留言查询功效就行了!

  为了能告竣你的希望,因而我决意在本章教程为你讲授具有留言查询功效的留言簿程序。在解说之前,让我们仍是先来进修将在源程序顶用到的COMMAND工具。
  
  起首让我们先来懂得一下Command工具所供应的属性和办法和它们的响应功效

ActiveConnection属性--创建与Connection通道的链接干系
CommandText属性--指定命据查询信息
CommandTimeout属性--入手下手实行数据查询后同意持续实行的最长工夫
CommandType属性--指定命据查询信息的范例
Prepared属性--指定命据查询信息是不是要先行编译
CreateParameter办法--创建一个新的参数工具
Execute办法--对数据库提出数据查询

  Command工具也是ADO工具汇合的一员,它次要用来把持对数据库收回的哀求信息,告知数据库:“要哪一个数据内外的数据?要甚么字段内的数据?数据必需切合甚么限定?请把这些切合我请求的数据全体寄存在Recordset工具内前往返来!”那末说究竟,Command工具的功效就是实行SQL(StructuredQueryLanguage布局式查询言语,是用于对寄存在盘算机数据库中的数据举行构造、办理和检索的一种工具;是一种特定范例的数据库--干系数据库)命令。假设你是一名对照仔细的人,你必定还记得我在第三章中实在就已用上了SQL命令,因而你就会对我提问:“你事先并没有效到Command工具呀?”

  的确,没有Command工具我们也一样能够实行SQL命令。我们使用Connection工具或是使用Recordset工具一样能够实行SQL命令。办法以下所示:
Setrs=conn.Execute(SQL命令)
使用Connection工具实行SelectSQL命令,然后将了局指定给Recordset工具。
conn.ExecuteSQL命令
使用Connection工具实行数据操纵的SQL命令。
Setrs=Server.CreateObject("ADODB.Recordset")
rs.OpenSQL命令,conn

先创建Recordset工具,再实行SQL命令拔取数据。
使用Command工具又是怎样来实行SQL命令的呢?人人请看:
Setcmd=Server.CreateObject("ADODB.Command")
Setcmd.ActiveConnection=conn
cmd.CommandText=sql
Setrs=cmd.Execute

可见使用Command工具来实行SQL命令,得先将Connection工具及SQL命令设置给工具Command的ActiveConnection及CommandText属性,然后才实行cmd.Execute函数。

  由上述我们能够晓得,本来利用Recordset工具和利用Command工具来实行SQL命令,实质都是一样的。既然云云,那末我们为何还要使用Command工具呢?为了申明这个成绩,我分离用两种分歧的办法来为留言簿增加留言查询功效,个中查询“留言簿已往五天留言纪录”和“留言纪录日期查询”是使用Command工具来实行SQL命令的,而“留言者姓名查询”和“最新十条留言纪录”的查询则是使用Recordset工具来实行SQL命令。
  讲了这很多也该进正题了,我们起首来进修的是使用Recordset工具来完成“留言者姓名查询”和“最新十条留言纪录”的查询。以下我们仍是经由过程分步骤的办法来举行申明。
步骤一:起首我们得计划一个留言查询的界面(Datesearch.asp),以下图所示:
步骤二:使用Recordset工具来实行SQL命令,完成“最新十条留言纪录”的查询。
Setconn=Server.CreateObject("ADODB.Connection")
DBPath=Server.MapPath("book2.mdb")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&DBPath
sql="selecttop10*fromguestbookorderbyIDDesc"

  这里用“orderbyIDDesc”暗示依照“ID”字段从年夜到小排序。由于在数据库中我将ID字段的数据范例设为“主动编号”,留言纪录的ID将按前后从小到猛进行排序,以是要查询最新的十条留言便是查询最初的十条ID的纪录。
Setrs=conn.Execute(sql)
  使用Recordset工具来实行SQL命令,完成“留言者姓名”的查询的道理与上述分歧,程序以下所示:

namesearch=request.form("name")
namesearch=Replace(namesearch,"","")
还记得我在第三章中先容SqlStr函数时的申明吗?忘了就到归去看看吧。
Setconn=Server.CreateObject("ADODB.Connection")DBPath=Server.MapPath("book2.mdb")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&DBPath
sql="select*fromguestbookwhere姓名="&namesearch&"orderbyID Desc"
Setrs=conn.Execute(sql)

步骤三:计划查询了局的Web页面(Search.asp)。

<%
SubSearch(rs)
Response.Write"<CENTER><tableborder=2width=90%cellpadding=2cellspacing=2bordercolorlight=#000000bordercolordark=#FFFFFFbordercolor=#FFFFFFbgcolor=#FFFFFFalign=center>"
Response.Write"<TRBGCOLOR=#33CCCC>"
Fori=0tors.Fields.Count-1
Response.WRITE"<TD>"&rs.Fields(i).Name&"</TD>"
Next
Response.Write"</TR>"
"&rs.Fields(i).Name&"暗示显现数据表的“字段仰面”
WhileNotrs.EOF
Response.Write"<TR>"
Fori=0tors.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&"暗示显现数据表的“数据字段内容”
EndSub
%>

ASP进阶教程Ⅸ:留言查询功效(二)
我们接上一部分持续解说怎样使用Command工具来实行SQL命令,完成“留言纪录日期查询”和“留言簿已往五天留言纪录查询”。但在使用Command工具来实行SQL命令之前我们必需在留言数据库中先创建查询,假设我们要查询的是“留言簿已往五天留言纪录”,那末在留言数据库中创建查询的详细办法以下所示。(关于数据库,在Access中能够创建五种分歧范例的查询,由于我们要查询两个日期之间的留言纪录,因而我在这里只以“利用‘计划’视图创建参数查询”为例,固然你也能够“利用导游创建查询”。利用“计划”视图创建查询要比利用导游天真很多,比方,在“计划”视图中,既能够创建像“选择查询”之类的复杂查询,又能够创建像“参数查询”和“操纵查询”之类的庞大查询,并且在“查询计划网格”中既可以增添、挪动、拔出和删除字段,也可以设置原则和排次序序,盘算总和战争均值,等等)
  在Access中,利用‘计划’视图创建参数查询:
  1、翻开留言数据库,在“数据库”窗口中单击“查询”选项卡,然后单击“新建”按钮。
  2、在“新建查询”对话框中,单击“计划视图”,然后单击“断定”按钮。
  3、在“显现表”对话框中,选择“表”选项卡,然后单击“增加按钮大概双击“guestbook”表的称号,将它增加到“查询”窗口中,然后封闭“显现表”的对话框。
  4、在“guestbook”表的字段列表中,单击“ID”字段的字段名,按住鼠标不放,将它拖到“查询计划网格”的第一列。一样,能够将“姓名”、“德律风”、“EMAIL”、“主题”、“留言”和“工夫”字段的字段名顺次拖到“查询计划网格”的别的各列中。
  5、在作为参数利用的“工夫”字段下的“原则”单位格中,键进以下表达式:
Between[请键进入手下手日期]And[请键进停止日期]。
  6、单击工具栏上的“保留”按钮保留查询,这时候会弹出一个“另存为”的对话框,我们在“另存为”对话框中输出该查询表的称号“留言纪录日期查询”,然后单击“断定”按钮。 
  在留言数据库中创建了查询后,我们接上去将使用Command工具来实行日期查询的SQL命令编写以下(Date.asp):
<!--#includefile="adovbs.inc"-->
<!--#includefile="Search.asp"-->
<%
Head="留言簿查询"
start=Request("start")
last=Request("last")
读取用户输出的数据,然后指定给start及last变量
Ifstart=""Thenstart=#99-10-1#
Iflast=""Thenlast=#99-12-30#
假如用户没有输出查询的入手下手工夫和停止工夫时,在“入手下手工夫”和“停止工夫”的查询框中显现这里界说的缺省值99-10-1和99-12-30
%>
<h2Align="Center"><%=Head%></h2>
<hrnoshadecolor="red">
<%
Setconn=Server.CreateObject("ADODB.Connection")
DBPath=Server.MapPath("book2.mdb")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&DBPath
Setcmd=Server.CreateObject("ADODB.Command")
Setcmd.ActiveConnection=conn
cmd.CommandText="留言纪录日期查询"
将Connection工具及SQL命令设置给Command工具的ActiveConnection属性和CommandText属性
ReDimparam(1)
声明含有两个元素的数组,由于该“留言日期查询”必需有查询的肇端工夫和停止工夫,以是在这里必需声明一个含有两个元素的数组
param(0)=CDate(start)
param(1)=CDate(last)
Setrs=cmd.Execute(,param)
将start及last变量指定给param数组,然后传进cmd.Execute函数中,在这里函数cmd.Execute含有两个参数,个中第一个参数是用于但愿前往的数据纪录数,这里缺省暗示但愿前往一切的数据纪录;参数二“param”是SQL命令的参数。
Searchrs
%>
<hrnoshadecolor="red"><divalign="center">
<ahref="Datesearch.asp"class="text2">前往留言查询</a>
  同理,使用Command工具来实行SQL命令,完成“留言簿已往五天留言纪录查询”的道理与上述完成“留言纪录日期查询”的道理是一样的,我们能够编写以下所示:
Setconn=Server.CreateObject("ADODB.Connection")
DBPath=Server.MapPath("book2.mdb")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&DBPath
Setcmd=Server.CreateObject("ADODB.Command")
Setcmd.ActiveConnection=conn
cmd.CommandText="留言簿已往五天留言纪录"
Setrs=cmd.Execute
Searchrs
  至此,两种完成查询的办法我们都已进修过了,人人能说出它们存在着甚么区分吗?
  打个例如,假如我们间接把某一个SQL命令写在ASP程序中,要晓得该命令是不是准确无误,我们必需启动扫瞄器扫瞄这个程序才干够测试出来,若SQL命令有错,我们必需修正ASP程序,然后再从头扫瞄直到准确为止;假如我们使用Command工具来实行SQL命令,则必需直到留言数据库中创建的查询完整准确才将SQL命令存储成“查询工具”,因而在ASP程序中我们只需将这个查询工具的称号指定给Command工具的CommandText参数,便可准确无误地实行SQL命令。
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-19 12:28:46 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
简单生活 该用户已被删除
板凳
发表于 2015-2-5 08:27:50 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
再现理想 该用户已被删除
地板
发表于 2015-2-11 08:18:53 | 只看该作者
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
谁可相欹 该用户已被删除
5#
发表于 2015-3-2 02:44:27 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
只想知道 该用户已被删除
6#
发表于 2015-3-11 02:03:06 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
莫相离 该用户已被删除
7#
发表于 2015-3-24 20:41:20 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:26

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表