当前位置:编程学习 > asp >>

九天学会ASP之第六天课程

学习目的:学会数据库的基本操作2(查询记录)
答案:在第四天中我们有这样一个程序:
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("db1.mdb")
exec="select * from aaa"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>

    我们查询的是所有的记录,但是我们要修改、删除记录的时候不可能是所有记录,所有我们要学习搜索合适的记录。先看一条语句:
a="张三"
b=111
exec="select * from aaa where name='"+a+"'and tel="+b

    where后面加上的是条件,与是
and,或是or,我想=,<=,>=,<,>的含义大家都知道吧。这句话的意思就是搜索name是张三的,并且电话是111的记录。还有一点就是如果要搜索一个字段里面是不是包含一个字符串就可以这么写:where instr(name,a)也就是搜索name里面有a(张三)这个字符串的人。
我这里的a,b,是常量,大家可以让a,b是表单提交过来的变量,这样就可以做一个搜索了。
    下面大家看看这个代码,理解一下:
<form name="form1" method="post" action="scan1.asp">
搜索:<p><br>
姓名:
<input type="text" name="name">
或 电话:
<input type="text" name="tel">
</p>
<p>
<br>
<input type="submit" name="Submit" value="搜索">
<input type="reset" name="Submit2" value="重置">
</p>
</form>

    把以上代码保存为scan.asp。

    再把以下代码保存为scan1.asp。
<%
name=request.form("name")
tel=request.form("tel")
if tel="" then
tel="1"
end if
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("db1.mdb")
exec="select * from aaa where name='"+name+"'
or tel="+tel
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%><tr>
<td><%=rs("name")%></td>
<td><%=rs("tel")%></td>
<td><%=rs("content")%></td>
<td><%=rs("ttime")%></td>
</tr>
<%
rs.movenext
loop
%>
</table>

    这里我们用到了一个if来判断取得的tel变量是否为空,如果为空的话,就会直接给tel设置一个结果1,否则的话就继续以下的动作。在“exec="select * from aaa where name='"+name+"' or tel="+tel”这句话的意思是搜索表名为aaa中字段名为name等于表单读取到变量中的值或者字段名为tel等于表单读取到变量tel中的值,如果找到的话就显示到下面的表格中,否则就显示空白。“+name+”也可以用“&name&”来代替。因为tel字段类型是为数值型的,所以搜索时可以不跟name一样加单引号和双引号,而是直接这样写:“+tel”,如果tel也是文本型的话,就不能这样写的,可以这样写:exec="select * from aaa where name='"+name+"' or tel='"+tel+"'"就可以。 

如果有时候我们设计查询表时,不一定要输入具体的内容进行查找,比如我要查找数据库中姓名有个“张”字的所有记录,这时我们可以不用=来搜索,而是用like,请看这句:exec="select * from aaa where name like '%"&name&"%' and tel like '%"&tel&"%'"大家自己把这句代码替换到上面相应的位置测试看看效果,然后再举一反三,多设置几个字段和变量来搜索看看。

上一个:九天学会ASP之第五天
下一个:九天学会ASP之第七天在线教程

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,