资源描述
ASP数据库操作总结
一 连接数据库
Conn.asp
<%
set db=server.CreateObject("adodb.connection")
str="Driver={microsoft access driver (*.mdb)};DBQ=" & server.MapPath("db\address.mdb")
db.open str
%>
之后在每个需要操作数据库的页面引用该文件
<!--#include file="conn.asp" -->
二 显示数据库记录
1、首先建立记录集
<%
dim rs,sql
Set rs=Server.CreateObject("Adodb.Recordset")
sql="Select * from link"
rs.open sql,db,1,1(或1,3)
%>
显示记录的方法
<%
do while not rs.eof
%>
<tr>
<td width="135"><%=rs("name")%></td>
<td width="108"><a href=<%=rs("url")%>><%=rs("url")%></a></td>
<td width="153"><%=rs("intro")%></td>
<td width="54">修改</td>
<td width="44"><a href="del.asp?id=<%=rs("link_id")%>">删除</a></td>
</tr>
<%
rs.movenext
loop
%>
三 添加记录
<%
yname=request("yname")
url=request("url")
intro=request("intro")
set rs_news=server.CreateObject("adodb.recordset")
sql="select * from link"
rs_news.open sql,conn,1,3
if yname<>"" and url<>"" then
rs_news.addnew
rs_news("name")=yname
rs_news("url")=url
rs_news("intro")=intro
rs_news("submit_date")=date
rs_news.update
end if
%>
添加记录的另一种方法
四 删除记录
(删除记录时,要注意传递相关参数)
<%
id=request.QueryString("id")
set rs_news=server.CreateObject("adodb.recordset")
sql="delete from link where link_id="& id
rs_news.open sql,conn,1,3
response.Redirect("dbshow.asp")
%>
五 修改记录
首先建立记录集,根据传递的参数将要修改的记录取出来(尤其要提醒的是,一定要注意SQL语句的写法)
<%
id=request.QueryString("id")
set rs_news=server.CreateObject("adodb.recordset")
sql="select * from link where link_id=" & id
rs_news.open sql,conn,1,3%>
然后修改(一般需要修改的记录放在表单中,不需要修改的直接显示出来)
<%
if request("name")<>"" and request("url")<>"" and request("intro")<>"" then
yname=request("yname")
url=request("url")
intro=request("intro")
set rs=server.CreateObject("adodb.recordset")
sql="update link set name='" & yname &"',url='" & url &"',intro='" & intro &"' where link_id=" & id
rs.open sql,conn,1,3
response.Redirect("dbshow.asp")
end if%>
六 搜索
<%
dim sql,rs,findtext
findtext=request.Form("findtext")
if findtext<>"" then
sql="select * from link where name like '%" & findtext & "%'"
set rs=db.execute(sql)
do while not rs.eof
%>
<tr>
<td><%=rs("name")%></td>
<td><%=rs("url")%></td>
<td><%=rs("intro")%></td>
</tr>
<%
rs.movenext
loop
end if
%>
七 Asp分页技术
分页程序首先读取每页预置的记录条数,在此是5条,其它将在下页中显示,同时提示当前页数、总页数、总记录数,当显示的页数为第一页时,“首页”、“上一页”链接失效,当显示的页数为最后页时,“下一页”、“尾页”链接失效。
接下来,以实例的方式介绍怎么一步步的做出这种分页效果。
首先,数据库中字段record_info存在于info表中,先链接数据库并将一个记录集打开,以下代码:
<%
Set conn=Server.CreateObject("Adodb.Connection")
connstr="provider=Microsoft.JET.OLEDB.4.0;Data Source="&Server.MapPath("data.mdb")
conn.open connstr
Set rs=Server.CreateObject("Adodb.Recordset")
sql="Select * from info"
rs.open sql,conn,1,1
%>
这段代码不详解,以前课我们已经讲过,接下来这是分页中比较重要的部分,只有三行而已:
<%
rs.pagesize=5
curpage=Request.QueryString("curpage")
if curpage="" then curpage=1
rs.absolutepage=curpage
%>
第二句:rs.pagesize=5,这个什么意思呢?它就是在Recordset对象中的一个内置属性,它的作用是指定每页的记录条数,设置为5时,每5条记录放在一起成一页(即每页只显示5条记录),比如实例中共有21条记录,那么,使用rs.pagesize分页后,这21条记录将分成5页进行显示。
第三、四句:这里主要是用于翻页的功能,将URL的post参数curpage传递给curpage变量,这个curpage将得到浏览者想要到达的页数,同时用if语句将没有传递到curpage参数的页直接赋于第一页的值。(运行一下实例就会明白)
第五句:rs.absolutepage,这个也是个内置的属性,它代表的意思就是将curpage变量的数值指定为当前页。
现在开始可以让记录循环显示了:
<%
for i= 1 to rs.pagesize
if rs.eof then
exit for
end if
%>
<%=rs("record_info")%><br>
<%
rs.movenext
next
%>
代码解释:
第二句:
利用for循环在每页显示rs.pagesize属性中指定的记录数。
第三、四、五句:
这句意思是当最后一页达不到指定记录时就退出循环,以免出错。
第七句:
绑定从数据库取出的record_info字段,就是叫这字段内的记录循环显示的。
第九句:
用rs.movenext方法将rs记录集往下移一条记录。
第十句:
for循环语句。
另外可以用<%=curpage%>读出当前页次,用<%=rs.pagecount%>读出总页数,用<%=rs.recordcount%>读出总记录数。例如:“当前第<%=curpage%>页,共有<%=rs.pagecount%>页,共有:<%=rs.recordcount%>条记录”。
在显示首页、上页、下页、尾页功能上,采用了if...else...语句,比较好懂。
<%if curpage=1 then%>
首页
<%else%>
<a href="?curpage=1">首页</a>
<%end if%>
<%if curpage=1 then%>
上一页
<%else%>
<a href="?curpage=<%=curpage-1%>">上一页</a>
<%end if%>
<%if rs.pagecount<curpage+1 then%>
下一页
<%else%>
<a href="?curpage=<%=curpage+1%>">下一页</a>
<%end if%>
<%if rs.pagecount<curpage+1 then%>
尾页
<%else%>
<a href="?curpage=<%=rs.pagecount%>">尾页</a>
<%end if%>
理解一下:
首页:
这个使用当前页是否为第一页时判别,如果当前为第一页(也就是首页),那么显示首页两字,没有链接,否则提供直接跳转到首页的链接。
上一页:
当前为第一页时,链接失效,反过来,链接到当前面的上一页,这里使用:<%=curpage-1%>,就是用当前的页数减去1,得到上一页。
下一页:
这里需要使用rs.pagecount这个属性来比较,假如总页数小于当前页数加1的值,那表明这就是第后一页,链接将失效,否则链接到下一页。
尾页:
和下一页的功能一样判定出是最后页时链接失效,否则将当前页指定为rs.pagecount(总页数)。
展开阅读全文