VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > ASPnet >
  • asp.net教程之SQL Server数据库模糊查询的ASP实现

ASP及其ADO组件简介 
---- ASP(Active Server Pages)是一种服务器端的脚本语言,可以把它看作是Html、脚本和 CGI(通用网关接口)的结合。但它却比Html保密性更高,比脚本更灵活,比CGI更高效。 
----ASP程序的扩展名为“.ASP“,它可以包含Html语句、 ASP命令、文本及其他可以嵌套于Htnk文档的所有描述性语言(如:VBScripts,JavaScripts 等)。其中ASP命令必须位于ASP定义的符号“<%”、“%>”之间,当用户访问ASP网页时,Web服务器先将“<%”、“%>”之间的ASP命令解析执行,然后将结果响应给用户,这样用户就无法看到ASP源文件。这就是ASP保密性高的原因。 

----ASP内置了ADO组件,因此可以轻松地存取各种数据库。 ADO是微软公司提供给开发者在网页中存取数据库的最新技术。ADO组件主要包括 Connection对象、Command对象、Parameter对象、RecordSet对象、Field对象、Property 对象、Error对象等七个对象和Fields数据集合、Properties数据集合、Parameters数据集合、Errors数据集合等四个数据集合。 

----Connection对象负责与数据源(数据库或文本文件)的连接; 

----Command对象传递指定的SQL命令; 

---- Parameter对象提供Command对象所需的SQL命令参数; 

----RecordSet对象负责浏览与操作从数据源中取出的数据; 

----Field对象指定RecordSet对象的具体字段。 

----这是与数据库存取密切相关的几个对象。 

SQL Server数据库的模糊查询 
----SQL Server 数据库的Select查询命令可以实现数据库的查询。在Select命令的Where子句中使用“LIKE”关键词和“%”通配符就可以做到模糊查询。下面语句在pubs数据库的authors表中查找Name字段的值含有“Smith”字符串的所有记录。 
Use pubs 
Select * From authors 
Where Name LIKE “%Smith%” 
GO 

----SQL Server数据库还提供了一种叫做Stored Procedure (存储过程)的数据库对象,用户可以将一些常用的命令过程以存储过程的形式存储起来,需要运行这些存储过程时,只要输入存储过程名即可。这样不仅简化了操作,而且提高了效率(存储过程的运行比一个个的命令高效得多)。存储过程名的选取应符合SQL Server的命名规则,当它以“#”开头时,表示一个临时存储过程,它只在应用程序运行时存在,程序结束后,被自动删除。 

----下面的语句创建一个名字为#query的临时存储过程: 

Create Procedure #Query 
As 
Select * From authors 
Where Name LIKE “%Smith%” 

数据库模糊查询的ASP实现 
----在ASP命令中,没有类似于SQL命令中的“LIKE”关键词和“%”通配符,因此仅仅使用ASP命令实现数据库的模糊查询有一定的困难。笔者在编程实践中利用ADO组件的Connection对象、RecordSet对象分别动态创建、运行数据库的临时存储过程对象,不仅实现了模糊查询,而且具有很好的交互性。 
----1.创建一个用户交互页面INPUT.HTML 

< html > 
< head > 
< title >用户输入界面< /title >< /head > 
< body > 
< center >< font face=“隶书" size=+3 > 
数据库查询< /font >< /center > 
< form method=“post" action=“query.asp" > 
按字段< select name=“leixing" > 
< option value=“Name” >姓名< /option > 
< option value=“sex" >性别< /option > 
< /select >进行查询< br > 
关键词< input type=“text" name=“keyword" size=40 >< br > 
< input type=“submit" value=“查询" > 
< input type=“reset" value=“清除" > 
< /form > 
< /body > 
< /html > 

----当用户在此客户端页面上输入数据后,这些数据通过 Form数据集合由“POST”方法传递到服务器端的query.asp页面,由query.asp来完成查询功能。 

----2.创建Query.asp文件,实现模糊查询 

< html > 
< head > 
< title >< /title > 
< /head > 
< body > 
< % 
response.write “< center >< font face="“隶书" 
“size=+2 >查询结果< /font >< /center >" 
DIM qucol,str,str5 
‘------获取Form数据 -------- 
qucol=request.form(“leixing") 
str=request.form(“keyword") 
‘--------生成Where子句------- 
str5=qucol&“LIKE "&“"“%"&str&“%"“" 
‘建立数据库连接。carlos:数据源名;sa: 
用户名;pubs:数据库名 
SetConn= Server.CreateObject(“ADODB.Connection") 
Conn.Open “DSN=carlos;UID=sa;PWD=;Database=pubs" 
for I=0 to conn.errors.count-1 
response.write conn.errors(I).description&“< br >" 
next 
‘----创建临时存储过程---------- 
CommandText=“CREATE PROCEDURE 
#query"&session(“num")&_ 
“AS select * From authors Where "&str5 
Conn.execute CommandText,0,-1 

‘-------创建RecordSet对象------- 
Set rs=Server.CreateObject(“ADODB.RecordSet") 
‘------运行临时存储过程-------- 
Const adOpenDynamic=2 
Const adLockOptimistic=3 
const adComdStoredProc=8 
CommandText=“#query"&session(“num") 
session(“num")=session(“num")+1 
rs.Open CommandText,Conn,adOpen 
Dynamic,adLockOptimistic,_ 
adComdStoredProc 
‘---------显示查询结果 ------ 
response.write “< table border="“1"“ >" 
response.write“< tr >" 
for I=0 to rs.fields.count-1 
response.write “< td >"&rs(I).Name&“< /td >" 
next 
response.write “< /tr >" 
while not rs.EOF 
response.write“< tr >" 
for I=0 to rs.fields.count-1 
css=rs(I).value 
if css< >“" then 
response.write “< td >"&css&“< /td >" 
else 
response.write “< td >.< /td >" 
end if 
next 
rs.moveNext 
response.write “< /tr >" 
Wend 
response.write“< /table >" 
rs.close 
set rs=nothing 
set Conn=nothing 
% > 
< !-- 查询结束,返回输入界面,开始下次查询 -- > 
< a href=“input.html" >返回到查询< /a > 
< /body > 
< /html > 

----这里的临时存储过程名为#query1(#query2,# query3,……),每次的名字都不同,以避免每次执行query.asp时创建同名的存储过程。由于我们创建的是临时存储过程,当用户查询结束退出时,这些存储过程会自动删除,不会对数据库造成任何影响。 

 


相关教程