登陆注册
19122000000011

第11章 常规的数据库搜索(1)

本章要点

本章介绍常规的基于数据库的全文搜索技术。包括:精确搜索、范围搜索和模糊搜索。本章是继续学习基于数据库的全文搜索的基础,是常规知识的概要总结。

3.1常规的数据库搜索

常规的数据库搜索,就是基于标准SQL语句的句法进行的数据查询。通常要使用“=”进行精确搜索,使用“between”、“in”符号设定范围搜索,使用“like”实现模糊搜索。结合数据库的内置函数(如:instr等),还可以实现其他类型的搜索,因数据库而异。

使用ASP3.0,ASP.NET1.1,PHP5.1.4,JSP2.4等技术均可实现常规的数据库搜索,本章各举一例来说明这些情况。

关于SQL Server2000数据库的安装见附录A,其基本使用方法见附录B。

关于Oracle9i数据库的安装见附录C,其基本使用方法见附录D。

关于MySQL5.0.19数据库的安装见附录E,其基本使用方法见附录F。

3.2使用ASP实现常规的数据库搜索

这一节的案例演示了基于数据库的搜索,使用ASP3.0技术,以及SQL Server2000数据库中的pubs数据库和authors表格。

3.2.1使用ASP实现精确搜索

精确搜索,使用“=”来表达,如以下案例所示。(本书程序的关键代码都用粗体表示。)

案例名称:精确搜索

程序名称:exact.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=LOCALHOST;driver={sql server};uid=sa;pwd=;

database=pubs;"

search="White"

sql="select*from authors where au lname=′"& search &"""

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

这个程序将语句"select*from authors where au lname="white""传递给数据库服务器。

它直接在数据库中执行。这就是一个用“=”表达的精确检索。

3.2.2使用ASP实现范围搜索

范围搜索,就是设定搜索条件在某个范围之中,然后进行搜索。下面的案例演示了基于数据库的范围搜索。

案例名称:范围搜索

程序名称:range.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=LOCALHOST;driver={sql server};uid=sa;pwd=;database=pubs;"

sql="select*from authors where au lname in("White","Green",′Carson")"

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

这个程序将语句"select*from authors where au lname in("White","Green",′Carson")"传递给数据库服务器。它直接在数据库中执行。这就是一个用“in”表达的精确检索。

常用的还有between谓词实现的搜索,如以下的案例所示。

案例名称:between谓词的使用

程序名称:between.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=localhost;driver={sql server};uid=sa;pwd=;database=pubs;"

sql="select*from authors where contract between1and2"

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

这个程序将语句"select*from authors where contract between1and2"传递给数据库服务器。它直接在数据库中执行的结果。这就是一个用“between”表达的精确检索。

常规的数据库搜索,就是基于标准SQL语句的句法进行的数据查询。通常要使用“=”进行精确搜索,使用“between”、“in”符号设定范围搜索,使用“like”实现模糊搜索。结合数据库的内置函数,还可以实现其他类型的搜索,因数据库而异。

3.2.3使用ASP实现模糊搜索

与前两类搜索相比,模糊搜索用得更加广泛,在标准SQL语句中使用“like”谓词来实现,通常的模糊匹配模式有“%”和“”。“%”表示任意多个任意字符,“”表示一个任意字符。下面的案例演示了它们的用法。

案例名称:模糊搜索-1

程序名称:fuzzy1.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=localhost;driver={sql server};uid=sa;pwd=;database=pubs;"

sql="select*from authors where au lname like"hite""

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

这里用的模式是“hite”,也就是在“hite”前面有一个字符,在authors表格的au lname字段中只有“White”符合要求。语句"select*from authors where au lname like"hite""在数据库中的运行结果。

使用“%”进行模式匹配的情况比“”多一些,下面的案例演示了它的用法。

案例名称:模糊搜索-2

程序名称:fuzzy2.asp

<%

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open"server=localhost;driver={sql server};uid=sa;pwd=;database=pubs;"

sql="select*from authors where au lname like"%M%""

rs.Open sql,conn,1,1

while not rs.eof

response.Write rs("au id")&"——"& rs("au lname")&"——"& rs("au fname")&"<br>"

rs.movenext

wend

rs.close

conn.close

set rs=nothing

set conn=nothing

%>

模式“%M%”匹配的是所有au lname字段包含字母“M”的记录。

在前两个例子的基础上,做一个稍微复杂一点测试,将模式变为“a%e%”,符合这个模式的au lname字段包括MacFeather,Karsen,Panteley。在查询分析器中执行语句"select*from authors where au lname like"a%e%""。

3.3使用ASP.NET实现常规的数据库搜索

这一节的案例演示了基于数据库的搜索,使用ASP.NET1.1技术,以及SQL Server2000数据库中的pubs数据库和authors表格。

3.3.1使用ASP.NET实现精确搜索

精确搜索,使用“=”来表达,如下面案例所示。

案例名称:精确搜索

程序名称:exact.aspx

<%@ Import Namespace="System.Data"%>

<%@ Import Namespace="System.Data.SqlClient"%>

<script language="VB"runat="server">

Sub Page Load(SenderAs Object,EAs EventArgs)

Dim connAs New SqlConnection

("server=localhost;database=pubs;uid=sa;pwd=;")

dim searchAs String="White"

dim sqlAs String="select*from authors where au lname=′"& search &"""

Dim cmdAs New SqlCommand(sql,conn)

Dim drAs SqlDataReader

try

conn.Open()

dr=cmd.ExecuteReader()

while dr.read

response.write(dr("au id")&"——"& dr("au lname")&"——"& dr("au fname")&"<br>")

end while

catch ex as Exception

response.write("出错了!")

finally

if not dr is nothing then

dr.close

end if

if not conn is nothing then

conn.close

end if

end try

End Sub

</script>

3.3.2使用ASP.NET实现范围搜索

案例名称:范围搜索

程序名称:range.aspx

<%@ Import Namespace="System.Data"%>

<%@ Import Namespace="System.Data.SqlClient"%>

<script language="VB"runat="server">

Sub Page Load(SenderAs Object,EAs EventArgs)

Dim connAs New SqlConnection

("server=localhost;database=pubs;uid=sa;pwd=;")

dim sqlAs String=

"select*from authors where au lname in("White","Green",′Carson")"

Dim cmdAs New SqlCommand(sql,conn)

Dim drAs SqlDataReader

try

conn.Open()

dr=cmd.ExecuteReader()

while dr.read

response.write(dr("au id")&"——"& dr("au lname")&"——"& dr("au fname")&"<br>")

end while

catch ex as Exception

response.write("出错了!")

finally

if not dr is nothing then

dr.close

end if

if not conn is nothing then

conn.close

end if

end try

End Sub

</script>

3.3.3使用ASP.NET实现模糊搜索

这里演示使用“%”进行模式匹配的情况。

同类推荐
  • 中学理科课程资源-漫话数学故事

    中学理科课程资源-漫话数学故事

    追溯数理化的演变历程,对话最新颖权威的方法,探索最成功的课程教学,感受最前沿的科技动态,理科教育的全程解码,数理化的直面写真。
  • 中学生高效学习方法指导

    中学生高效学习方法指导

    本书针对当代中学生在学习过程中出现的不良习惯进行分析,再针对问题给出相应的解答,让学生发现自身的问题,并根据本书提供的方法进行纠正,以达到有效提高学习成绩的目的。另外本书针对外界给现在学生带来的种种不良影响,对中学生的道德及行为规范进行了比较详细的阐述。
  • 别笑,我是高考零分作文5

    别笑,我是高考零分作文5

    此书是按照2010年全国各地高考卷整理收集的零分作文集,是前四季的延续,也是别具一格的最全最新的版本。作文的内容结合了最近的热点事件,更能引起读者的共鸣。内容更加精彩,观点更加新颖,文风更加独特!
  • 剥茧抽丝的侦探故事

    剥茧抽丝的侦探故事

    有时真实的比虚构的更让人感到陌生和震撼。希望这些故事可以启迪青少年朋友,让他们感受到什么是真、善、美,什么是假、恶、丑,并能从中积累生活经验和科学常识,开阔眼界、拓展思维、扩大知识面,使精神生活更加丰富多彩。
  • 新课程师资培训教程-高中政治经典教案

    新课程师资培训教程-高中政治经典教案

    为新课程实施和提高教师专业化水平而精心编写,选取了大量教案,内容上充分体现了知识性和趣味性。接受课改新理念,感受课改新思维,使用课改新教材,至始至终课改给人一种焕然一新的感觉。它是一次革命,一场对话,一座平台,一把迈向成功教育的钥匙。
热门推荐
  • 追忆似水年华

    追忆似水年华

    王黎冰所著的《追忆似水年华》为青春的华章·90后校园作家作品精选之一。《追忆似水年华》:对生活诚实以待,对现实勇敢坚守,对梦想执著追求,这是丰盈的青春合集。或关注本土风情、展现市井人物精神风貌;或追溯历史,对话文化大师;或缅怀先辈,渗透浓郁亲情……
  • 冷情总裁的阳光天使

    冷情总裁的阳光天使

    每个女孩心中都有一个白马王子,每个王子心中都有一个独一无二的公主。对南宫瑄而言,她的王子与公主是自己最重要的伙伴,却不曾想会有那么一天有那么一个人会成为她心中独一无二不可替代的王子,但她也明白这王子并非她所能拥有的,所以她不断地退缩,不断地想要逃离。然而,命运的齿轮早已将他们联系在一起,又岂是她所能避免的。
  • 掌生者

    掌生者

    人族第一强者,在经历无数岁月的洗礼后,消失在历史的长河中,他所留下的功法也分成七块流落在人间,外星域各大种族欲再战人族,人族的命运又会如何?一个平凡的书生因身上流传着奇异的血脉,竟吸引来了一件异宝,无意间竟然习得一套功法,从此之后,结仙缘,修仙法,换天命,踏仙途。我的命,由我不由天!
  • 如果下辈子我们可以再见面

    如果下辈子我们可以再见面

    累了就坐下来看看风景,慕子言说:我这辈子可能只爱的上安希一个人,可她需要自由,于是我给她自由。安希说:我最对不起的人叫慕子言最爱的人也叫慕子言。....如果下辈子我们还可以再见面。
  • 卓越管理者处事之道

    卓越管理者处事之道

    本书分为10章,内容包括“自身硬朗,魅力处事”、“树立威信,权威处事”、“以情感人,热忱处事”、“协调关系,沟通处事”等,讲解了用人管人之法、谋事成事之道。
  • 帝战神荒

    帝战神荒

    神荒大地,万族林立,天才并起,这是一个以武力称霸的世界,枯叶梦蝶而归,机缘巧合下与月光宝盒融合,掌控时光倒流之力。他——无不死之身,却有不死之命。
  • 神穿:逗比媳妇是天才

    神穿:逗比媳妇是天才

    “听说凡间很好玩。”“是吗?那我们一起去看看吧!”当逗比杀手遇见腹黑王爷……
  • 神龙独尊

    神龙独尊

    一个神秘的铁球,让林玄来到一个新奇的世界。先天独一无二的体质,修炼绝世神诀,只要是敌人就难逃灭杀的命运。他一步步的变强,迈向巅峰。
  • 妃常了得之穿越之妃

    妃常了得之穿越之妃

    21世纪的天才美少女慕雪溪因一枚神秘玉镯意外穿越,成了天宇王朝的待选秀女慕容雪曦,原本只想顶着秀女头衔进宫混吃混喝玩趟古代自由行,却福星高照,不仅成了太后身边地大红人,还赢得了天下第一高富帅--皇帝帅哥的"芳心",于是成为重矢之的,卷起了后宫乃至前朝的惊涛骇浪……
  • 我的可爱小公举

    我的可爱小公举

    她曾是名门千金,活泼可爱,却被一场突如其来的欺骗隐恨在身。他来了,他像王子宠着公主,爱的泡泡重聚在她心里······各位书友要是觉得《我的可爱小公举》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!