柔情似水 发表于 2015-1-16 22:15:05

ASP教程之简复杂单在ASP使用程序中到场智能搜刮

ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。程序  用ASP完成搜刮引擎的功效是一件很便利的事,但是,怎样完成相似3721的智能搜刮呢?好比,当在搜刮前提框内输出“中国国民”时,主动从中提取“中国”、“国民”等关头字并在数据库内举行搜刮。看完本文后,你就能够发明,这个功效完成起来居然是云云的复杂。

  第一步,我们要创建一个名为db_sample.mdb的数据库(本文以Access2000数据库为例),并在个中创建表T_Sample。表T_Sample包含以下字段:

  ID主动编号
  U_Name文本
  U_Info备注

  第二步,我们入手下手计划搜刮页面Search.asp。该页面包含一个表单(Frm_Search),表单内包含一个文本框和一个提交按钮。并将表单的method属性设为“get”,action属性设为“Search.asp",即提交给网页本身。代码以下:

<!--Search.asp-->
<formname="frm_Search"method="get"action="Search.asp">
请输出关头字:
<inputtype="text"name="key"size="10">
<inputtype="submit"value="搜刮">
</form>

  上面,就进进了完成智能搜刮的关头部分。

  起首,创建数据库毗连。在Search.asp的入手下手处到场以下代码:

<%
 DimstrProvider,CNN
 strProvider="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="
 strProvider=strProvider&Server.MapPath("")&"datadb_Sample.mdb"假定数据库寄存在主页根目次下的data目次下
 SetCNN=Server.CreateObject("ADODB.connection")
 CNN.OpenstrProvider翻开数据库毗连
%>

  接上去,判别ASP页所吸收到的数据,并在数据库中举行搜刮。

<%
 DimS_Key,RST,StrSQL
 S_Key=Trim(Request("key"))失掉搜刮关头字的值
 IfS_Key<>""then
  SetRST=Server.CreateObject("ADODB.RecordSet")
  StrSQL=AutoKey(S_Key)此处利用自界说函数AutoKey(),该函数为完成智能搜刮的中心
  RST.OpenStrSQL,CNN,3,2失掉搜刮后的纪录
  IfRST.BOFAndRST.EOFThen
%>
<fontcolor="#FF0000">未找就任何了局!!!</font>
<%
Else
%>
搜刮称号为“<fontcolor="#FF0000"><%=S_Key%></font>”的项,共找到<fontcolor="#FF0000"><%=RST.RecordCount%></font>项:<p>
<%
WhileNotRST.EOF遍历全部纪录集,显现搜刮到的信息并设置链接
%>
<!--此处可设为你所必要的链接方针-->
<fontstyle="font:12pt宋体"><ahref="info.asp?ID=<%=RST("ID")%>"target="_blank"><%=RST("U_Name")%></a></font>

<!--显现部分具体内容-->
<fontstyle="font:9pt宋体"><%=Left(RST("U_Info"),150)%></font><p>
<%
 RST.MoveNext
 Wend
  RST.Close
  SetRST=Nothing
 EndIf
EndIf
%>

  在下面的代码中,有一个自界说函数AutoKey,该函数是完成智能搜刮的中心地点。代码以下:

<%
FunctionAutoKey(strKey)
CONSTlngSubKey=2
DimlngLenKey,strNew1,strNew2,i,strSubKey

  检拆字符串的正当性,若分歧法例转到堕落页。堕落页你能够依据必要举行设定。

ifInStr(strKey,"=")<>0orInStr(strKey,"`")<>0orInStr(strKey,"")<>0orInStr(strKey,"")<>0orInStr(strKey," ")<>0orInStr(strKey,"")<>0orInStr(strKey,chr(34))<>0orInStr(strKey,"")<>0orInStr(strKey,",")<>0orInStr(strKey,"<")<>0orInStr(strKey,">")<>0then
Response.Redirect"error.htm"
EndIf

lngLenKey=Len(strKey)
SelectCaselngLenKey
Case0若为空串,转到堕落页
Response.Redirect"error.htm"
Case1若长度为1,则不设任何值
strNew1=""
strNew2=""
CaseElse若长度年夜于1,则从字符串首字符入手下手,轮回取长度为2的子字符串作为查询前提
Fori=1TolngLenKey-(lngSubKey-1)
strSubKey=Mid(strKey,i,lngSubKey)
strNew1=strNew1&"orU_Namelike%"&strSubKey&"%"
strNew2=strNew2&"orU_Infolike%"&strSubKey&"%"
Next
EndSelect

  失掉完全的SQL语句

AutoKey="Select*fromT_SamplewhereU_Namelike%"&strKey&"%orU_Infolike%"&strKey&"%"&strNew1&strNew2

EndFunction
%>

  要完成智能搜刮,其中心就是将搜刮关头字举行主动分组。在此处,我们利用了轮回取长度为2的子串的办法。为何不将子串长度定为1、3、4或其他呢?这是由于若子串长度小于2即为1时,会得到将关头字分组的功效,而若子串长度年夜于2,则会丧失一些词组。人人能够将CONSTlngSubKey=2改成其他数字试一试,孰优孰劣自见分晓。

  最初,别忘了将数据毗连封闭,以开释资本。

<%
CNN.Close
SetCNN=Nothing
%>

  至此,这个智能搜刮引擎已完成了。你还能够将其持续完美,好比增加分页、凸起显现等功效。好了,不延误人人工夫了,从速往试一试吧。asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。

蒙在股里 发表于 2015-1-19 06:00:50

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

海妖 发表于 2015-1-27 05:32:31

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。

小女巫 发表于 2015-2-5 03:04:56

掌握asp的特性而且一定要知道为什么。

透明 发表于 2015-2-11 03:09:12

下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...

小妖女 发表于 2015-3-1 20:22:18

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

若相依 发表于 2015-3-10 23:39:14

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

莫相离 发表于 2015-3-17 16:10:07

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

仓酷云 发表于 2015-3-24 12:07:29

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
页: [1]
查看完整版本: ASP教程之简复杂单在ASP使用程序中到场智能搜刮