学习目的:学会数据库的基本操作2(查询记录) 在第四天中我们有这样一个程序: <% 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 %> 我们查询的是所有的记录,但是我们要修改、删除记录的时候不可能是所有记录,所有我们要学习检索合适的记录。先看一条语句: a="张三" b=111 exec="select * from guestbook where name='"+a+"'and tel="+b where后面加上的是条件,与是and,或是or,我想=,<=,>=,<,>的含义大家都知道吧。这句话的意思就是搜索name是张三的,并且电话是111的记录。还有一点就是如果要搜索一个字段里面是不是包含一个字符串就可以这么写:where instr(name,a)也就是搜索name里面有a(张三)这个字符串的人。 我这里的a,b,是常量,大家可以让a,b是表单提交过来的变量,这样就可以做一个搜索了。 下面大家看看这个代码,理解一下:
example6.asp: <% name=request.form("name") tel=request.form("tel") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb") exec="select * from guestbook where name='"+name+"' and tel="+tel set rs=server.createobject("adodb.recordset") rs.open exec,conn,1,1 %>
学习目的:学会数据库的基本操作3(删除记录) 开门见山,大家直接看程序。 exec="delete * from guestbook where id="&request.form("id") 上面这句话完成了删除记录的操作,不过锁定记录用了记录唯一的表示id,我们前面建立数据库的时候用的是系统给我们的主键,名字是编号,由于是中文的名字不是很方便,大家可以修改为id,不修改的话就是 exec="delete * from guestbook where 编号="&request.form("id") 下面我们看完整的代码:一个表单传给ASP文件一个ID,然后这个ASP文件就删除了这个ID。
example7.asp: <% set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb") exec="delete * from guestbook where 编号="&request.form("id") conn.execute exec %> 我在示例里面加了一个example72.asp,和example4.asp差不多,就是加了一个id字段,大家可以先运行这个文件看一下所有记录的ID和想删除记录的ID,删除记录以后也可以通过这个文件复查。等到最后一天,我们会把所有的这些东西整合的。大家就不会需要这么麻烦的操作。
example72.asp: <% 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 %>
学习目的:学会数据库的基本操作4(修改记录) 先来看代码: <% set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("test.mdb")//这不是以前的一个数据库,里面就aa,bb两个字段 exec="select * from test where id="&request.querystring("id") set rs=server.createobject("adodb.recordset") rs.open exec,conn %>
<% rs.close set rs=nothing conn.close set conn=nothing %> 大家到现在应该分析这个代码没有什么问题,这个代码的作用是接受前面一个页面的ID然后显示这条记录,文本框即是输入的地方也是显示的地方,如果需要修改的话修改以后按提交;如果不需要修改就可以直接按提交按钮。这里还有一个东西以前没有说,那就是隐藏的表单元素:hidden元素,里面的value是不用用户输入的,会随着表单一起提交,用于传递变量。下面是modifysave.asp的代码: <% set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("test.mdb") exec="select * from test where id="&request.form("id") set rs=server.createobject("adodb.recordset") rs.open exec,conn,1,3 rs("aa")=request.form("aa") rs("bb")=request.form("bb") rs.update rs.close set rs=nothing conn.close set conn=nothing %> 在这里,rs.open exec,conn,1,3后面的参数是1,3,这我以前提过,修改记录就要用1,3。实际上修改记录很容易看懂,记录集是rs,rs("aa")就是当前记录aa字段的东西,让它等于新的数据request.form("aa")当然就修改了,不过最后别忘记保存,那就是rs.update! 说到这里,记录的搜索,读取,修改,插入都说了,通过这最基本的东西就可以作出复杂的东西了,外面的大型数据库:新闻系统,留言簿就是字段多一点罢了。今天的示例中的代码是结合以前的数据库的,大家DOWN了以后回去调试分析一下。(rar里面的那个example72.asp还是供大家查询记录ID和核对修改以后的记录用的)
学习目的:基本的SESSION组件,总结response,request组件。 首先,有会员系统的任何程序都会用到检测是不是用户已经登陆这个步骤。这就用到了SESSION组件,下面我们 看一个代码来说明。 <% session("islogin")="yes" %> 这句话的意思就是在session里面定义一个islogin字符串变量,值为"yes",直接可以赋值,不需要声明。是不是很简单? 如果我们做管理员登陆系统的话,首先是一段检测是不是管理员 if 是 then session("isadmin")=yes" else session("isadmin")="no" end if 在每一个需要管理员才能看的页面最前面加上 <% if not session("isaadmin")="yes"then response.redirect "login.htm" %> 这样一般用户就无法打开这个页面。解释一下response.redirect,它是转向的意思,后面的"login.htm"就是转向的文件。这样没有登陆的管理员是无法看到后面的内容的。 下面总结一下response组件基本就是用到response.write (),response.redirect() 分别是写字符串和转向的作用request基本就是request.form(),request.querystring() 分别是接受post,get方法传来的信息今天就说到这里了,最后我的示范是一个登陆系统大家可以研究一下,基本就是上面的知识点比较简单的。
学习目的:分页技术,总结 今天最后一天我们学习一下ASP里面稍微难一点地分页技术,毕竟当我们有N条记录的时候我们不可能把所有记录显示在一个页面里面吧。 <% exec="select * from test" set rs=server.createobject("adodb.recordset") rs.open exec,conn,1,1 rs.PageSize=3 pagecount=rs.PageCount page=int(request.QueryString ("page")) if page<=0 then page=1 if request.QueryString("page")="" then page=1 rs.AbsolutePage=page %> rs.pagesize设置一个页面里面显示的记录数,pagecount是我们自己定义的一个变量,rs.pagecount是记录的个数,page也是我们自己定义的一个变量,我们下一页的链接可以设置为list.asp?page=<%=page+1%>,下一页的链接可以设置为list.asp?page=<%=page-1%>,这样当按下链接的时候调用页面自己,page这个变量就+1或者-1了,最后我们让rs.absolutepage(当前页面)为第page页就可以了。 if request.QueryString("page")="" then page=1,这句话的作用就是我们打开list.asp的时候没有跟随page变量,自动设置为page=1,防止出错,还有当我们if....then...放在一行的时候end if可以省略。是不是分页也不难? 下面说一种特殊情况: if page=1 and not page=pagecount,这个时候没有上一页,但是有下一页 elseif page=pagecount and not page=1,这个时候没有下一页,但是有上一页 elseif page<1,这个时候没有任何记录 elseif page>pagecount then,这个时候没有任何记录 elseif page=1 and page=pagecount,这个时候没有上一页,没有下一页 else,这个时候有上一页,也有下一页。 下面看一段显示1到n页,且每一个数字点击以后就出现这个数在代表的页面的代码,很常见哦。 <%for i=1 to pagecount%> <%=i%><%next%> for....next是循环从i=1开始,循环一次加1到pagecount为止。