添加、删除、更新数据库记录

  说明:《网络程序设计-ASP》(蔡翠平主编、尚俊杰编著,清华大学出版社、北方交通大学出版社),第8章习题的实践题第1题:

  修改程序add.asp和update.asp,允许客户省略网址和网站简介为空

1 add.asp代码:

<% Option Explicit %> '所有变量必须先定义
<% Response.Buffer=True%> '将网页文件先送到缓存
<html>
<head>
<title> 添加新记录示例</title>
</head>
<body>
<h2 align="center">添加新网站</h2>
<center>
<table border="1" width="90%">
<form action="" method="post" name="form1">
<tr>
<td>网站名字</td><td><input type="text" name="name" size=20></td>
</tr><tr>
<td>网站网址</td>
<td><input type="text" name="URL" size=60></td>
</tr>
<tr>
<td>网站简介</td>
<td><textarea name="Intro" rows="2" cols="60" wrap="soft">
</textarea></td>
</tr>
<tr>
<td><input type="submit" value=" 确 定 "></td>
</tr>
</form>
</table>
</center>
<%
'如果上面的信息,只有网站名称必须填写,否则给出错误信息
If Request("name")<>"" Then
dim db '以下连上数据库,建立一个Connection对象实例db
set db=Server.Createobject("ADODB.Connection")
db.Open "DBQ="&Server.Mappath("wwwlink.mdb")&";DRIVER={Microsoft Access Driver (*.mdb)};" '以下添加新记录
Dim strSqla,strSqlb,strSql,varName,varURL,varIntro
varName=Request("name") '这里也可以不定义变量,下面直接用Request("Name")
varURL=Request("URL")
varIntro=Request("intro")
StrSqla="insert into link(name,submit_date"
strSqlb="values('" & varName & "',#" & now() & "#" '这里Date()是取系统时间
if varIntro<>"" then
StrSqla=StrSqla & ",Intro"
strSqlb=strSqlb & ",'" & varIntro & "'"
end if
if varURL<>"" then
StrSqla=StrSqla & ",URL"
strSqlb=strSqlb & ",'" & varURL & "'"
end if
strSql=StrSqla & ")" & strSqlb & ")"
db.execute(strSql) '这里利用Execute方法,添加记录
Response.Redirect "e8-1.asp"'添加完毕,返回首页
Else
Response.Write "<br><div align='center'>网站名称必须填写</div>"
End If
%>
</body>
</html>

2 update.asp代码

<% Option Explicit %>
<% Response.Buffer=True %>
<html>
<head>
<title> 修改记录示例</title>
</head>
<body>
<h2 align="center">修改网站</h2>
<%
'首先根据传入的Link_ID将原有数据显示在表单内
Dim varLink_id
varLink_id=Request.QueryString("link_id")
'以下连上数据库,建立一个Connection对象实例db
dim db
set db=Server.Createobject("ADODB.Connection")
db.Open "DBQ="&Server.Mappath("wwwlink.mdb")&";DRIVER={Microsoft Access Driver (*.mdb)};"
'以下建立Recordset对象实例rs
Dim strSql,rs
strSql="select * from link where link_id=" & varLink_id 'varLink_id是传过来的
set rs=db.Execute(strSql)
%>
<center>
<table border="1" width="90%">
<form action="" method="post" name="form1">
<tr>
<td>网站名字</td><td><input type="text" name="name" size=20 value="<%=rs("Name")%>"></td>
</tr><tr>
<td>网站网址</td><td><input type="text" name="URL" size=60 value="<%=rs("URL")%>"></td>
</tr><tr>
<td>网站简介</td><td>
<textarea name="Intro" rows="2" cols="60" wrap="soft"> <%=rs("Intro")%>
</textarea></td>
</tr><tr>
<td><input type="submit" value=" 确 定 "></td>
</tr>
</form>
</table>
</center>
<%
'不填写网站名称,给出错误信息
If Request("name")<>"" Then
'以下修改记录
Dim varName,varUrl,varIntro
varName=Request("name") '这里也可以不定义Name变量,下面直接用Request("name")
varURL=Request("URL")
varIntro=Request("intro")
if Request("URL")<>"" AND Request("intro")<>"" then
StrSql="update link set name='" & varName & "',URL='" & varURL & "',intro='" & varIntro & "' where link_id=" & varLink_id
elseif Request("URL")<>"" AND Request("intro")="" then
StrSql="update link set name='" & varName & "',URL='" & varURL & "',intro=NULL where link_id=" & varLink_id
elseif Request("URL")="" AND Request("intro")<>"" then
StrSql="update link set name='" & varName & "',URL=NULL,intro='" & varIntro & "' where link_id=" & varLink_id
else
StrSql="update link set name='" & varName & "',URL=NULL,intro=NULL where link_id=" & varLink_id
end if
db.Execute(strSql) '这里利用Execute方法,修改记录
Response.Redirect "e8-1.asp" '修改完毕,返回首页6-1.asp
Else
Response.Write "<br><div align='center'>网站名称必须填写</div>"
End If
%>
</body>
</html>
  提示:上述代码中应用了多条件语句。特别注意,空值字段,须“赋值”:NULL。即:
if 条件语句1(网站名称、网站地址、网站简介字段均有值)then
执行语句1(更新该记录中三个字段的内容)
elseif 条件语句2(网站名称、网站地址两个字段有值) then
执行语句2(更新网站名称、网站地址两个字段的内容)
elseif 条件语句3(网站名称、网站简介两个字段有值) then
执行语句3(更新网站名称、网站简介两个字段的内容)
else
执行语句4(仅仅更新网站名称一个字段的内容)
end if
  提示:允许用户省略网站地址、网站简介为空。还有一种解决方案。即,给字段赋空字符串。代码见下:
If Request("name")<>"" Then
'以下修改记录
Dim varName,varUrl,varIntro
varName=Request("name") '这里也可以不定义Name变量,下面直接用Request("name")
varURL=Request("URL")
varIntro=Request("intro")
if Request("URL")="" then
varURL=" "
end if
if Request("intro")="" then
varIntro=" "
end if
StrSql="update link set name='" & varName & "',URL='" & varURL & "',intro='" & varIntro & "' where link_id=" & varLink_id
db.Execute(strSql) '这里利用Execute方法,修改记录
Response.Redirect "e8-1.asp" '修改完毕,返回首页8-1.asp
Else
Response.Write "<br><div align='center'>网站名称必须填写</div>"
End If

3 删除网页作了如下修改

  增加了警告:删除后无法恢复,是否删除

<% Option Explicit %>
<div align="center"> 警告:删除后,无法恢复 !
</div>

<form name="form1" method="post" action="">

<table width="30%" border="1" align="center">
<tr>
<td><input name="aa" type="radio" value="删除" >
删除</td>
<td><input name="aa" type="radio" value="放弃" >
取消</td>
</tr>
<tr>
<td colspan="2"><div align="center">

<input type="submit" name="Submit" value="确定">
</div></td>
</tr>
</table>
</form>
<%
dim varvalue,grad
varvalue=request.form("aa")
if varvalue="删除" then
grad="a"
end if
if varvalue="返回" then
grad="b"
end if
select case grad
case "a"
dim db
set db=Server.Createobject("ADODB.Connection")
db.Open "DBQ="&Server.Mappath("wwwlink.mdb")&";DRIVER={Microsoft Access Driver (*.mdb)};"
'以下删除记录,注意这里是由e8-1.asp传过来的要删除的记录的记录编号
Dim varLink_id,strSql
varLink_id=Request.QueryString("link_id")
strSql="delete from link where link_id=" & varLink_id
db.Execute(strSql) '这里利用Execute方法,删除记录
response.Redirect "e8-1.asp"
case "b"
response.Redirect "e8-1.asp"
end select
%>
  提示:使用了选择语句select case
  此外,单选按钮组,初始值是:均不选中。否则,打开该网页后,就按初始值执行。用户就不能选择了!


主页                                  {其它

   

《花桥电脑书斋》-邱泳昱的个人主页
如需转载望能征求本人意见