ASP应用之三查询记录
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
整理课件
条件2对应的则是: Description like '% Request.Form("txtName")%'
整理课件
至此,我们可以构造如下SQL语句: SELECT * FROM catalog WHERE (Name like '% Request.Form("txtName")%') OR (Description like '% Request.Form("txtName")%')
整理课件
但是我们要修改、删除记录的时候不可能是所有记录,我们 要学习检索合适的记录。
先看一条语句: a="张三" b=111 exec="select * from guestbook where name='"+a+"'and tel="+b where后面加上的是条件,与是and,或是or,这句话的意 思就是搜索name是张三的,并且电话是111的记录。
• 1 新建一个动态页searchcatalog.asp,定 义数据库连接,创建页面中的表单,表单 域,如下图;
整理课件
具体的实现步骤:
在该页面中,利用两个单选按钮来指定查询条件。这两个单选按钮的名称都为 radWhichRule;
整理课件
2 创建显示搜索结果的页面 searchresult.asp,定义数据库连 接,定义传递参数的请求变量(在
第十一讲 ห้องสมุดไป่ตู้SP应用之三: 查询记录
通过留言簿数据库实例讲解如何查 询指定记录。
整理课件
查询语句的具体应用
• 格式:(1)单条件查询:SELECT * FROM 表 WHERE 条件
• (2)多个条件的查询: • SELECT * FROM 表 WHERE 条件1 OR 条件2 • SELECT * FROM 表 WHERE 条件1 AND 条件2
<input type="submit" name="Submit" value="提交">
</form>
整理课件
<% 下面我们通过程序先来看看数据库中编号
set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb") exec="select * from guestbook" set rs=server.createobject("adodb.recordset") rs.open exec,conn,1,1 %>
action=“search.asp">
搜索:<br>
name =
<input type="text" name="name">
and tel=
<input type="text" name="tel">
<br>
<input type="submit" name="Submit" value="提交">
整理课件
商品信息复杂查询
• 通过商品信息查询我们将讲解select语句 的具体应用:如何对记录集进行高级定义 实现查询条件的设定、显示区域的服务器 行为。
• 在商品信息查询中,需要有一个页面让用 户指定查询条件,用户选定查询条件并输 入查询要求后,第二个页面显示查询结果 。
整理课件
具体的实现步骤:
整理课件
在本例中,我们是要查找商品名称或描述中包 含用户输入的文字的商品,因此,需要在首尾 加上%。 因此,条件1对应的是: Name like '% Request.Form("txtName")%', 位于% %中间的则是获取到的用户输入的内容。
整理课件
大家不妨把中间的 Request.Form("txtName")换成具体的值,如 计算机,那么该语句就变成:Name like '%计 算机%',也就是商品名称中出现了计算机这三 个字的所有商品都符合我们的查询条件。如 “微型计算机”、“计算机语言”、“计算机 原理”、“计算机操作系统”等都属于符合该 条件的查询结果。
id=”&request.form(“id”)
上面这句话完成了删除记录的操作,不过锁定记录用
了记录唯一的表示id,我们前面建立数据库的时候用的是
系统给我们的主键,名字是编号,由于是中文的名字不是
很方便,大家可以修改为id,不修改的话就是
exec=“delete * from guestbook where 编号
整理课件
(1)如果查询条件为请查找商品名称以 计算机开头的商品,则我们可以用’计 算机%’来表示,也就是用%表示后面的 任意字符。 (2)而如果是要查找商品名称以计算机 结尾的商品,则我们可以用’%计算机’ 来表示。 (3)如果是要查找在商品名称中出现计 算机的商品,则可以在首尾加上%,也 就是‘%计算机%’来表示。
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
整理课件
• 在我们的例子中,我们是要查询商品名 称或描述中包含用户输入的文字的商品 。这里,就有两个查询条件,条件1是指 商品名称中包含有用户输入的文字,条 件2是商品描述中包含用户输入的文字。
整理课件
通配符的使用: 那么如何用SQL语句来表达这一查 询条件呢?查询条件“包含”我们 一般是用表达式LIKE(类似于.....) 加%来表示。%是用来进行字符匹配 的操作符,它代表任何字符。
整理课件
接下来,我们需要对该语句进行一定的完善, 如去掉用户在输入过程中不小心加入的空格, 如何去掉空格呢?可用字符串函数Trim,因此, 我们可以将原有的条件换成: (Name like '% Trim (Request.Form("txtName")%'))和 (Description like '% Trim (Request.Form("txtName")%'))
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath(“guestbook.mdb")
exec="select * from guestbook where name='"+name+"' and tel="+tel
=”&request.form(“id”)
新建文件delete.htm.下面我们看完整的代码:一个表单传
给ASP文件一个ID,然后这个ASP文件就删除了这个ID。
<form name="form1" method="post"
action=“delete.asp">
delete:
<input type="text" name="id">
整理课件
根据这一原则,最后在asp文件中的语句应该是如下格 式: "SELECT * FROM catalog WHERE (Name like '%"+ Trim(Request.form("txtName")) + "%') OR (Description LIKE '%" + Trim(Request.form("txtName")) + "%')"
整理课件
至此,语句如下: SELECT * FROM catalog WHERE (Name like '% Trim(Request.Form("txtName"))') OR (Description like '% Trim(Request.Form("txtName"))')
整理课件
SQL语句在asp文件中的正确书写: 那么,我们将语句放到asp文件中去还会出现哪些问题 呢? 由于整个该sql语句是作为字符串赋值给变量 Recordset1.Source的,在该语句中包含有多个字符串, 因此,我们需要用+将多个字符串连接起来。那么如何 决定哪些内容作为一个字符串呢?属于SQL命令的如 select * from catalog where (name like '%这一部分应 用双引号引起来,为什么要将%后面的东西不放到该 引号中呢,大家想一下,如果将Trim()部分的内容也放 到双引号中,那么程序在执行时,将不会去获取表单 中的值,而是将它作为字符串传给服务器去执行。因 此,我们将Trim()作为一个字符串,直接用+与前后的 字符串相连接。
<input type="reset" name="Submit2" value="重置">
</form>
整理课件
<%
name=request.form("name")
tel=request.form("tel")
set conn=server.createobject("adodb.connection")
<td><%=rs("tel")%></td>
<td><%=rs("message")%></td>
<td><%=rs("time")%></td>
</tr>
<%
rs.movenext
loop
%>
</table>
</body>
整理课件
</html>
删除记录
exec=“delete * from guestbook where
整理课件
• 第二种实现的方式为,先对搜索条件进行判断: • if Replace(Recordset1__mmWhichRuleStr, "'", "''") =
"bykeyword" then • Recordset1.Source = "SELECT * FROM catalog WHERE
(Name like '%" + Trim(Replace(Recordset1__mmNameStr, "'", "''")) +"%') OR (Description like '%"+ Trim(Replace(Recordset1__mmNameStr, "'", "''"))+"%')" • else • Recordset1.Source = "SELECT * FROM catalog WHERE category= '" + Replace(Recordset1__mmCategoryStr, "'", "''") + "'" • end if
绑定面板中):名称分别为 txtName、radWhichRule和 selCategory,类型为“请求”, 定义记录集rstSearchResult,单 击高级,进入如下图所示窗口,完 成变量部分与SQL部分的定义。
整理课件
整理课件
• 下面重点对SQL中的语句进行讲解:该查 询语句用OR连接两个查询条件:关键词 查询或种类查询,即where (条件1) OR (条件2),条件1对应的是选取的是关 键词查询,即 ’mmWhichRuleStr’=’bykeyword’,它应 该满足的条件是字段name中包含用户输 入的名称或description中包含用户输入 的描述内容,因此,用AND将这两个条件 连接起来。条件2对应的是选取的是种类 查询,满足的条件是 category='mmCategoryStr'
如果要搜索一个字段里面是不是包含一个字符串就可以这么 写:where instr(name,a)也就是搜索name里面有a(张三) 这个字符串的人。
整理课件
刚才的a,b,是常量,大家可以让a,b是表单提交过来的变量, 这样就可以做一个搜索了。
新建文件search.htm
<form name="form1" method="post"
整理课件
• 3 保存页面,测试。
整理课件
利用代码方法实现
• 回顾 • <%
set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb") exec="select * from guestbook" set rs=server.createobject("adodb.recordset") rs.open exec,conn,1,1 %> 查询的是所有的记录
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%><tr>
<td><%=rs("name")%></td>
条件2对应的则是: Description like '% Request.Form("txtName")%'
整理课件
至此,我们可以构造如下SQL语句: SELECT * FROM catalog WHERE (Name like '% Request.Form("txtName")%') OR (Description like '% Request.Form("txtName")%')
整理课件
但是我们要修改、删除记录的时候不可能是所有记录,我们 要学习检索合适的记录。
先看一条语句: a="张三" b=111 exec="select * from guestbook where name='"+a+"'and tel="+b where后面加上的是条件,与是and,或是or,这句话的意 思就是搜索name是张三的,并且电话是111的记录。
• 1 新建一个动态页searchcatalog.asp,定 义数据库连接,创建页面中的表单,表单 域,如下图;
整理课件
具体的实现步骤:
在该页面中,利用两个单选按钮来指定查询条件。这两个单选按钮的名称都为 radWhichRule;
整理课件
2 创建显示搜索结果的页面 searchresult.asp,定义数据库连 接,定义传递参数的请求变量(在
第十一讲 ห้องสมุดไป่ตู้SP应用之三: 查询记录
通过留言簿数据库实例讲解如何查 询指定记录。
整理课件
查询语句的具体应用
• 格式:(1)单条件查询:SELECT * FROM 表 WHERE 条件
• (2)多个条件的查询: • SELECT * FROM 表 WHERE 条件1 OR 条件2 • SELECT * FROM 表 WHERE 条件1 AND 条件2
<input type="submit" name="Submit" value="提交">
</form>
整理课件
<% 下面我们通过程序先来看看数据库中编号
set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb") exec="select * from guestbook" set rs=server.createobject("adodb.recordset") rs.open exec,conn,1,1 %>
action=“search.asp">
搜索:<br>
name =
<input type="text" name="name">
and tel=
<input type="text" name="tel">
<br>
<input type="submit" name="Submit" value="提交">
整理课件
商品信息复杂查询
• 通过商品信息查询我们将讲解select语句 的具体应用:如何对记录集进行高级定义 实现查询条件的设定、显示区域的服务器 行为。
• 在商品信息查询中,需要有一个页面让用 户指定查询条件,用户选定查询条件并输 入查询要求后,第二个页面显示查询结果 。
整理课件
具体的实现步骤:
整理课件
在本例中,我们是要查找商品名称或描述中包 含用户输入的文字的商品,因此,需要在首尾 加上%。 因此,条件1对应的是: Name like '% Request.Form("txtName")%', 位于% %中间的则是获取到的用户输入的内容。
整理课件
大家不妨把中间的 Request.Form("txtName")换成具体的值,如 计算机,那么该语句就变成:Name like '%计 算机%',也就是商品名称中出现了计算机这三 个字的所有商品都符合我们的查询条件。如 “微型计算机”、“计算机语言”、“计算机 原理”、“计算机操作系统”等都属于符合该 条件的查询结果。
id=”&request.form(“id”)
上面这句话完成了删除记录的操作,不过锁定记录用
了记录唯一的表示id,我们前面建立数据库的时候用的是
系统给我们的主键,名字是编号,由于是中文的名字不是
很方便,大家可以修改为id,不修改的话就是
exec=“delete * from guestbook where 编号
整理课件
(1)如果查询条件为请查找商品名称以 计算机开头的商品,则我们可以用’计 算机%’来表示,也就是用%表示后面的 任意字符。 (2)而如果是要查找商品名称以计算机 结尾的商品,则我们可以用’%计算机’ 来表示。 (3)如果是要查找在商品名称中出现计 算机的商品,则可以在首尾加上%,也 就是‘%计算机%’来表示。
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
整理课件
• 在我们的例子中,我们是要查询商品名 称或描述中包含用户输入的文字的商品 。这里,就有两个查询条件,条件1是指 商品名称中包含有用户输入的文字,条 件2是商品描述中包含用户输入的文字。
整理课件
通配符的使用: 那么如何用SQL语句来表达这一查 询条件呢?查询条件“包含”我们 一般是用表达式LIKE(类似于.....) 加%来表示。%是用来进行字符匹配 的操作符,它代表任何字符。
整理课件
接下来,我们需要对该语句进行一定的完善, 如去掉用户在输入过程中不小心加入的空格, 如何去掉空格呢?可用字符串函数Trim,因此, 我们可以将原有的条件换成: (Name like '% Trim (Request.Form("txtName")%'))和 (Description like '% Trim (Request.Form("txtName")%'))
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath(“guestbook.mdb")
exec="select * from guestbook where name='"+name+"' and tel="+tel
=”&request.form(“id”)
新建文件delete.htm.下面我们看完整的代码:一个表单传
给ASP文件一个ID,然后这个ASP文件就删除了这个ID。
<form name="form1" method="post"
action=“delete.asp">
delete:
<input type="text" name="id">
整理课件
根据这一原则,最后在asp文件中的语句应该是如下格 式: "SELECT * FROM catalog WHERE (Name like '%"+ Trim(Request.form("txtName")) + "%') OR (Description LIKE '%" + Trim(Request.form("txtName")) + "%')"
整理课件
至此,语句如下: SELECT * FROM catalog WHERE (Name like '% Trim(Request.Form("txtName"))') OR (Description like '% Trim(Request.Form("txtName"))')
整理课件
SQL语句在asp文件中的正确书写: 那么,我们将语句放到asp文件中去还会出现哪些问题 呢? 由于整个该sql语句是作为字符串赋值给变量 Recordset1.Source的,在该语句中包含有多个字符串, 因此,我们需要用+将多个字符串连接起来。那么如何 决定哪些内容作为一个字符串呢?属于SQL命令的如 select * from catalog where (name like '%这一部分应 用双引号引起来,为什么要将%后面的东西不放到该 引号中呢,大家想一下,如果将Trim()部分的内容也放 到双引号中,那么程序在执行时,将不会去获取表单 中的值,而是将它作为字符串传给服务器去执行。因 此,我们将Trim()作为一个字符串,直接用+与前后的 字符串相连接。
<input type="reset" name="Submit2" value="重置">
</form>
整理课件
<%
name=request.form("name")
tel=request.form("tel")
set conn=server.createobject("adodb.connection")
<td><%=rs("tel")%></td>
<td><%=rs("message")%></td>
<td><%=rs("time")%></td>
</tr>
<%
rs.movenext
loop
%>
</table>
</body>
整理课件
</html>
删除记录
exec=“delete * from guestbook where
整理课件
• 第二种实现的方式为,先对搜索条件进行判断: • if Replace(Recordset1__mmWhichRuleStr, "'", "''") =
"bykeyword" then • Recordset1.Source = "SELECT * FROM catalog WHERE
(Name like '%" + Trim(Replace(Recordset1__mmNameStr, "'", "''")) +"%') OR (Description like '%"+ Trim(Replace(Recordset1__mmNameStr, "'", "''"))+"%')" • else • Recordset1.Source = "SELECT * FROM catalog WHERE category= '" + Replace(Recordset1__mmCategoryStr, "'", "''") + "'" • end if
绑定面板中):名称分别为 txtName、radWhichRule和 selCategory,类型为“请求”, 定义记录集rstSearchResult,单 击高级,进入如下图所示窗口,完 成变量部分与SQL部分的定义。
整理课件
整理课件
• 下面重点对SQL中的语句进行讲解:该查 询语句用OR连接两个查询条件:关键词 查询或种类查询,即where (条件1) OR (条件2),条件1对应的是选取的是关 键词查询,即 ’mmWhichRuleStr’=’bykeyword’,它应 该满足的条件是字段name中包含用户输 入的名称或description中包含用户输入 的描述内容,因此,用AND将这两个条件 连接起来。条件2对应的是选取的是种类 查询,满足的条件是 category='mmCategoryStr'
如果要搜索一个字段里面是不是包含一个字符串就可以这么 写:where instr(name,a)也就是搜索name里面有a(张三) 这个字符串的人。
整理课件
刚才的a,b,是常量,大家可以让a,b是表单提交过来的变量, 这样就可以做一个搜索了。
新建文件search.htm
<form name="form1" method="post"
整理课件
• 3 保存页面,测试。
整理课件
利用代码方法实现
• 回顾 • <%
set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb") exec="select * from guestbook" set rs=server.createobject("adodb.recordset") rs.open exec,conn,1,1 %> 查询的是所有的记录
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%><tr>
<td><%=rs("name")%></td>