版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章ASP数据访问
本章提要:木章介绍数据访问的基本概念,并以Access数据库为例,详细介绍ASP
的数据库连接,记录的写入、查询、删除、修改等操作,通过实例介绍如果在页面上进行
记录的显示和分页等技术。
8.1表单数据传送
通过表单元素向服务器传送变量,然后将变量值显示在客户端的浏览器,是一项很平
常而重要的工作。
8.1.1表单元素
表单元素就如VisualBasic之中的控件一样。在Dreamweaver2004中,提供了这些
元素的具体形式。而表单域作为互动性的一种高级类型,它将表单元素结合在一起,让用
户可以通过浏览器,将数据传送到服务器上的其他AS〉应用程序。
所有的通用表单元素(如单选按钮、下拉列表、复选框等)都可以根据网站的整体构
思添加到页面之上,以完成网页的制作。
下面的图8.1给出了Dreamweaver2004中的表单元素,它们包括文本字段、隐藏域、
文本域、复选、单选、单选组、列表菜单、跳转菜单、图像域、文件域、按钮、标签、字
段集等。
KacroaediaDrea>veaverIX2004-[无标题文档(Untitled-1)]
文件国)编辑口查看9插入9修改也文本①命令©站点6)窗口世)帮助国)
表单▼(□□由卬回回回囿囱|画画口画:亡!
Untitled-l////////j
他ii©代|.乌向设yj检准呼电//匚1一]侬:叫\印\(\上
I\\\
表/单文本/字段隐藏/域文i/域复l选单l选单!选纲列表菜/单.跳转\余整图像域文件域按%标签?段集
图8.1DreamweaverMX2004设计视图中的表单元素
也可以通过插入菜单,来插入这些表单元素。图8.2给出了通过插入菜单插入表单元
素的列表。
图8.2DreamweaverMX2004设计视图下插入菜单中的表单元素
8.1.2建立表单域
表单元素放在一个表单域里面,建立一个表单域,然后修改动作里面的文件为要接受
这个表单变量的ASP文件。方法有两种,--种是post,这个方法传送的变量不会在浏览器
的地址栏里面显示,可以大批量传送数据;另一种是get,则是会在浏览器地址栏里面显
示的。
下面我们通过一个文本表单元素来说明建立表单域的方法。
文本域是最基本的表单元素,它传送的是文本信息。一般用户名、密码等都要用这个
元素传送,只不过如果是密码的话,要在类型里面选择密码类型,这样就会以*代替显
示出来的密码字符。文本域的名字很重要,以后会用到这个名字所以一般不用默认的名字。
示例:
♦建立一个提交表单aspOlf.asp文件。图8.3为代码,图8.4为显示效果。
taspOlf.asp-记事本13回区)
文件9编辑②格式Q)查看9帮助国)
<formname=''fornd・'method=''post''action="aspG1.asp''>
用户:<inputtype='*text"name=',user,,Xbr><br>
密码:<inputtype=•,password,,name=,,pass,,>
<br><br>
性别:<inputtype="radio"nane=",sex"ualue="男•,男
<inputtype=,,radioi,narne=,,sex"ualu11'女,,>女
<br><br>
城市:<selectnane=,,city">
<optionualue="长沙"selected)长沙〈/option)
<optionualue="就双”>武汉</option>
<optionualue="关酬郑州〈/optionX/selectXbrX"〉
<inputtype=*'subinit"nane="subnit1*'ualue=,■确定”>
<inputtype=,,reset,inane=*,submit2"ualue=''成消"Xbr》
</forn>
图8.3提交表单aspOlf.asp
图&4提交表单aspOlf.asp的显示效果
这个表单开始的一行:<formname="forml"method="post"action="aspOl.asp">,
指定了表单提交的模式为post方式以及向谁(aspOLasp)提交。
这个表单中有两个用于数据输入的文本框:用户和密码。注意密码框的type属性是
password,那么在密码输入时,为安全起见,将不会显示其值,而用*号代替。另有两
个单选按钮,用于选择性别。还有一个选项列表,用于选择城市。最后两个按钮,一个用
于确定提交,一个用于取消重置,请分别注意它们的type属性为submit和reset。
♦建立一个接收提交信息并显示的页面aspOl.asp。图8.5为代码。
taspOl.asp-记事本□0®
文件9端辑幽)格式Q)查看9帮助国)
<%
user=request•for''user'')
pass=request.formCpass*,)
sex=request.FormC'sex'')
city=request.form("city")
response.writeuserft***,
response.writepass&>a”
response.write
response.writecity
%>
图8.5接收并显示提交信息页面aspOl.asp
由于前面是用的post方法,那么在aspOl.asp里叫就可以用这样的语句来得到变
fi:<%user=request,form(〃user〃)%>。如果要显示变量则用:<%response,write
user%>o而如果方法用的是get方法,那么就改为<%
name=request.querystring("user")%>。实际上,两者可以统一为name二request(〃name〃)。
♦运行。
下面是运行时的状态。图8.6首先执行asp()lf.asp,填入数据后,按确定提交,得到
图8.7的显木结果。
图8.6执行提交表单并填入信息
?http://localhost/yunlun/w>root/test/aspOl.asp二回区)
文件9编辑©查看9收藏®工具①帮助®
地址也)▼葡http://Iocalhost/yunlun/wwwroot/test/aspO1.asp
张三123456女武汉
为完毕■a本地Intranet
图8.7接收显示结果
8.2数据库的建立
为了进行数据的访问,首先要建立数据库,本节以Access2003为例,建立一个名为
exasp.mdb的数据库,并建立一个users数据表,以备本章示例之用。有关其他类型的数
据库,我们在后面将给出一个总结说明,而更多的数据库知识,请参阅相关资料。下面通
过图示,快速介绍建立的过程。
图8.8Access2003工作界面
图8.8Access2003新建文件面版
文件新建数据库
图8.10exasp.mdb对象设计窗体
users:表
图8.11在exasp.mdb数据库新建表users
图8.12设置time字段默认值
图8.13输入几条初始数据库而得到的表
8.3数据库的连接与记录的读E
本节学习掌握ASP页面的Access数据库的连接,以及数据表记录的读取。下面的步
骤是一个典型的ASP与数据库连接的过程:建立连接对象、设置数据库路径:打开数据库、
设置记录对象、取记录。在ASP中,用来存取数据库的对象统称ADO(ActiveDataObjects),
主要含有三种对象:Connection:数据连接对象,用于打开或连接数据库。Recordset:
记录集对象,用于存取数据表记录。Command:命令对象,用于对数据库执行查询命令。
8.3.1数据库的连接
基于微软HS的平台上,通过服务器端运行的ASP程序来访问后台数据库,是一种最
常见的模式。而对于小型的数据库应用需求,微软的Access数据库,应该是与ASP程序
配套使用的首选。由于Access数据库的ODBC驱动程序支持的SQL指令集,执行效率高,
所以Access后台数据库、ASP服务器端程序、客户端IE浏览器,是一个精练实用高效的
组合模式。在这种使用模式中,ASP程序无疑是最重要的,是沟通客户端和后台数据库之
间的桥梁。在ASP程序中,通过VBScript,建立对Access数据库的连接,是客户能够访
问后台数据库的前提。
连接各数据库可以使用驱动程序,也可以使用数据源,建议大家使用驱动程序,因为
使用驱动程序非常方便、简单,而使用数据源比较麻烦。
请看下面的代码:
<%
setconn=server.createobject(^adodb.connection")
conn,open"Provider二Microsoft.Jet.OLEDB.4.0;Data
Source="&server.mappath("exasp.mdb〃)
%>
♦程序行:setconn=server.createobjectC'adodb.connection^),利用Server对
象的crcatcobjcct方法,建立一个ADO对象集中的connection对象,即连接对象。这是
建立数据库连接的初始步骤。执行这行程序后,conn成为一个连接对象。
♦程序行:conn,open〃Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&
server,mappath("exasp.mdb"),利用连接对象conn的open方法打开一个指定的数据
库。其中,服务器对象的mappath函数,取得要打开数据库的完整的文件路径,这其中,
数据库名是我们需要指定的参数,应该用我们要打开的数据库的实际名称替代。如果数据
库名是直接作为常量出现,要用引号将其括起来,并且不能丢掉扩展名。
简单地说,上面的代码就是两句话,第一句话定义了AD0DB数据连接组件conn,第二
句话利用连接组件conn连接到了数据库exasp.mdbo
再看下面的代码:
<%
exec=〃select*fromusers”
setrs=server.createobject("adodb.recordset^)
rs.openexec,conn
%>
这三条语句加在前面两条语句的后面。
♦程序行:exec="select*fromusers”。设置查询数据库的命令,它是通过一个
SQL查询语句实验的。select后面加的是字段,*表示所有字段,from后面再加上表的名
字,我们前面在exasp.mdb数据库中建立了一个users表。
♦程序行:setrs=server.createobject(''adodb.recordset^)o定义一个记录集组
件。今后,可以将通过执行查询所有搜索到的记录都放在这个组件(对象)中,
♦程序行:rs.openexec,conno是打开这个记录集,exec就是前面定义的查询命令,
conn就是前面定义的数据废连接组件。这一句的含义可能简单理解为:在conn所指定的
数据库中去,依据exec的设定去执行查询,将查询结果放在打开的rs对象中。关于这条
语句的参数值说明如下:
格式:
Recordset.openSource,ActiveConnection,CursorType,LockType,Options
各参数的含义如下表&1
参数含义值参数值含义
SQL查询、数据表
Source
或存储过程
打开的连接或连
ActiveConnection
接字符串
0只在记录中向前移动,速度较快。
可任意移动,其他用户修改记录可见,添加记录不可
1
见,删除记录字段值不可用。
CursorType游标类型
可任意移动,其他用户改、添、删的记录均可见,速
2
度较慢。
3可任意移动,其他用户增、删、改的记录均不可见。
0记录为只读
只要保持Recordset为打开,其他用户就无法编辑该
1
记录集中的记录。
LockType并发控制
2当更新recordset中的记录时,将记录加锁
3以批模式时更新记录时加锁
1SQL语句
2数据表名
指定source传递
Options
命令的类型
4存储过程
8未知类型
表8.1Recordset,open参数说明
8.3.2记录的读取
以下语句完成记录的读取:
<tablewidth="100%"border=〃1〃cellspacing=
<%dowhilenotrs.eof%>
<tr>
<tdalign=/,centerA><%=rs("ID")%X/td>
<tdalign=,,center,/X%=rs(,,name,,)%X/td>
<tdalign="center"><炉rs(,,tel,,)%></td>
<tdalign=/,centerA><%=rs(〃city〃)%X/td>
<tdalign="center"><%=rs("time")%X/td>
</tr>
<%
rs.movenext
loop
%>
</table>
在一个表格中,我们用5列分别显示了上次建立的表里面的5个字段,用d。循环,
notrs.eof的意思是条件为没有读到记录集的最后,rs.movenext的意思是显示完一条转
到下面一条记录,<%二国)等价于觐response.wrile%>用于在html代码里面插入asp代码,
主要用于显示变量。
8.3.3示例
下面的图示给出了一个表、一个查询显示数据ASP页面及其执行结果。注意:通常我
们将数据库连接语句作为单独的ASP文件(如conn,asp),而在具体的数据库操作页面中,
通过一条语句包含这个文件即可:<!—^includefile="conn,asp”>。
F
■users:表
IDnametelcitytime
►0张三8898002长沙35-4-919:53:01
2李四8834990武汉£-4-100:43:18
3王五8787665郑州35-4-100:44:38
米(自动编号)035-4-100:47:05
II
||记录:叵11口口[>1心米]共有记录数:3<>
图8.14已建立的数据库exasp.mdb中的表users
conn,asp-记事本
文件更)编辑d)格式查看®帮助®
<%
setconn=seruer.createobject(,,adodb.connection,,)
conn.open,,Prouider=Microsoft.Jet.OLEDB.4.0;Data
Source=,,&seruer.mappath(••exasp.ndb**)
%>
图8.15用户数据库连接的conn.asp
Pasp02.asp-记事本13回区I
文件更)编辑⑥格式查看9帮助国)
<?-ttincludeFile=,,conn.asp"―>
<%
exec=,,select*fromusers"
setrs=seruer.CreateObjectf^adodb.recordset**)
rs.openexec,conn
%>
<tablewidth=,,100%t,border=,,1i,cellspacing=,,1,,>
<%dowhilenotrs.eof%Xtr>
<tdalign=,'center,,XZ=rs("ID'')%></td>
<tdalign=,,center,,><%=rs(*,nane,')%></td>
<tdalign="center"XZ=rs(”tel")*><八d>
<tdalign=',center,'X%=rs(,,city")%></t(l>
<tdalign=",center"><%=rsC,time,,)V</t(l>
</tr><%
rs.rnouenext
loop
%>
图8.16通过查询显示数据页面asp02.asp
刍http://localhost/yunlun/wwroot/test/asp02.asp...13回冈
图8.17asp02.asp的执行结果
8.4记录的写入
8.4.1记录写入
先建立一个表单(图8.18)
,asp03f.asp-记事本匚)叵|国|
文件国)编辑量)格式Q)查看W)帮助国)
<h3>写入表单</h3Xhr>
<FormnafneiFornrrmethod=,'posf,action=,,asp03|.asp,,>
name:<inputtype=*,text,inarne=,,nane,,Xbr><br>
tel:<inputtype=,,text,inane=,,tel,,Xbr><br>
city:<inputtype=,,text"nane=,,city,,ualue=',,,Xbr><br>
<inputtype=,,submit"nane""Subiiit"ualue="确定
<inputtype="reset"namesaaSubmit2aaualue=■,取消
</Forn>
图8.18写入提交表单
再建立一个记录写入操作ASP页面(图8.19)。
其中包含了conn,asp文件,用以连接到数据库exasp.mdb。通过request对象,得到
提交表单中的值,将其赋给相应变量。接着建立一个SQL杳询字符串:exec二〃insertinto
users(name,tel,city)values('〃&name&〃',‘〃&city&〃')〃
insertinto后面加的是表的名字users,紧跟其后的括号里面是需要添加的字段名,
不用添加的字段以及字段内容为默认值的,可以省略不写。values后面是传送过夹的变量。
以后执行查询时,将这些变量的值添加到记录的字段中。
请注意:exec是一个字符串变量,它保存了一个SQL查询语句字符串,这个字符串是
分为如下七节通过&操作符连接起来的。
“insertintoguestbook(name,tel,message)values(177
〃,〃--I〃,〃•人〃,\〃
name,tel,city)
在ASP里面不能嵌双引号,可以用单引号代替双引号,放在双引号里面,连接两个变
量用+或者&o中间的name、tel、city,就是表单传来的变量。对于name和city,
将用单引号括起来,表示是字符串。而tel是数字型变量,所以不需要单引号括起来。
如果用表单传来的数据代替变量名字,并假设name二〃张三〃,tel=8877666,ciyt二〃
广州。则上述查询字符串的实际结果为:
“insertintoguestbook(name,tel,message)values('张三',8877666,‘广州’)〃
接下来的conn,execute语句,即执行上述exec字符串指定的SQL命令。最后通过
conn,close把打开的数据废关闭,把定义的组件conn设置为空,并显示添加成功提示信
息。
Pasp03.asp-记事本
文件任)编辑堡)格式Q)查看W)帮助国)
K,一ttincludefile=*,conn.asp'*―>
<%
name=request•for做''name'')
tel=request.FormCtel*')
city=request.formrcity")
exec=,,insertintousers(name,tel,city)ualues
(・',&name&“*),B
conn.executeexec
conn.close
setconn=nothing
response.write”记录添加成功,”
%>
图8.19记录写入操作
运行。下面的图8.20、图8.21、图8.22,分别通过asp03f.asp提交数据,并执行写
入页面asp03.asp。最后查看数据库表的变化。
图8.20在写入表单中键入信息
r
刍http://localhost/yunlun/wrroot/test/asp03.asp.・•匚]
文件®)编辑®)查看9收藏®工具(X)帮助QI)*
地址也)▼ejhttp://Iocalhost/jninlun/wwwroot/1est/asp03.aspV目转到
记录添加成功!
目完毕本地Intranet
图8.21按确定后写入成功提示
图8.22数据表的变化说明添加记录成功
8.4.2另一种记录写入方法
下面介绍另一种记录写入的方法。下面一系列图中给出了相应的代码。提交表单和前
面的基本一样,只不过提交的页面换了一个示例页面aspO3a.asp。
这里主要谈谈写入记录页面。该页面的代码如下:
<!-#includefile二〃conna.asp”—>
<%
sql=zzselect*fromusers”
rs.opensql,db,1,3
rs.addnew
rs("name")=request.form("name")
rs("tel")二request.form(〃tel〃)
rs("city〃)=request.form(〃city〃)
rs.update
rs.close
setrs=nothing
response,write〃记录添加成功!〃
%>
上述代码中主要有几点不同于前面的第一种方法:
♦在conna.asp中,建立了记录集对象。而rs.opensql,db,1,3,记录集对象rs,
以可写入方式打开了通过sql查询得到的数据表记录。
♦对于rs.addnew,先行创建一条空的新记录。
♦然后通过赋值的方式将提交表单提交的数据写入到记录集的新记录之中。
♦通过rs.update更新数据库表,即实际写入。
E'asp03af.asp-记事本国]回区]
文件9编辑也)格式Q)查看9帮助凶
<h3>写入表单</h3Xhr>
<Fornnane=*,form1,'method=''po$t''action=**asp03a.asp'^
name:<inputtype=,,text,*nane=,,nane,,><br><br>
tel:<inputtypeitext"nane=,,tel,,Xbr><br>
city:<inputtype=',text,iname=,,city,,ualue=,,,,Xbr><br>
<inputtypp=,,sublnit,,ualu©—•确定
<inputtype="reset"name=",Subnit2"ualue=''取消"〉
</Forn>
图8.23向asp03a.asp提交的表单
conna.asp-记事本I3回区
文件任)编辑起)格式查看W)帮助国)
<%
setdb=Seruer.CreateObject("ADODB.Connection")
db.open,,DBQ="&seruer.nappath("exasp.ndb*')&";driuer=
<microsoftaccessdriuer(*.ndb)}**
setrs=Seruer.CreateObject("ADODB.Recordset*')
%>
图8.24数据库连接与记录集的定义
Pasp03a.asp-记事本13回区
文件g编辑②格式@)查看9帮助国)
<?-ttincludeFile=*'conna.asp**―>
<%
sql=",select*Fromusers',
rs.opensqlydb91y3
rs.addnew
r5(''name'')=request
rs(,,tel,*)=request.Forn(**tel")
rs("city")=request.form("city")
rs.update
rs.close
setrs=nothing
response.write”记录添加成功,”
%>
图8.25写入记录的另一方式
图8.26通过提交表单提交数据
http://localhost/yunlun/r»root/test/asp03a.asp...
文件更)编辑®)查看(V)收藏⑥工具①帮助国)
地址也)▼http://localhost/yunlun/wwwroot/test/asp03a.asp
记录添加成功!
为完毕■A本地Intranet
图8.27记录添加成功
图8.28数据库表的变化显示记录添加成功
8.5记录的查询
本节学习掌握通过ASP页面对Access数据库表记录的查询显示。显然,我们要对所
有记录进行查询,但是我们真正需要得到的记录,不可能是所有记录,所有我们必须能够
通过适当的查询方式,来得到我们所要的记录。
例如:下面的语句,依据SQL直询语句,通过记录集组件rs,得到所有记录。这不我
们最后所需要的。
<!-includefile=//conn.asp*—>
<%
exec二〃select*fromusers”
setrs=server.createobject("adodb.recordset")
rs.openexec,conn,1,1
%>
下面请先看一组语句:
a=〃张三〃
b=8898002
exec=z,select*fromuserswherename='〃+a+”'andtel="+b
where后面加上的是条件,与是and,或是or,我想二,<二,>=,<,>的含义大家都知
道吧。这句话的意思就是搜索name是张三的,并且电话是111的记录。还有一点就是如
果要搜索一个字段里面是不是包含一个字符串就可以这么写:whereinstr(name,a)也就
是搜索name里面有a(张三)这个字符串的人。
我这里的a,b,是常量,大家可以让a,b是表单提交过来的变量,这样就可以做一个搜
索了。
t?asp。4f.asp一记事本
文件9编辑©格式Q)查看9帮助国)
<fornname=''formT'method=,'poste,action=',asp04.asp,,>
<h3>请输入查询条件:</h3Xhr><br>
姓名;<lnputtype="text"nane=',nane">
,,,,
电话s<inputtype="text"name=tel>
<br><br>
<inputnane=',Subrnit,'ualue="确定”
<inputtype=f,reset"name="Subnit2(aualue=''取消”>
</Forn>
图8.29杳询条件提交表单
图8.30查询条件提交表单显示效果
PaspO4.asp-记事本
文件任)编辑更)格式Q)查看W)帮助国)
<♦—ttincludefile=conn.asp-->
<%
name=request・for做''name")
tel=request
exec='*select*Fromuserswherenane=",,+nane+***and
tel="+tel
setrs=seruer.createobject('*adodb.recordset*1)
rs.openexec,conn,1,1
%>|
<tablewidth=,,100%,iborder=,,1,,>
<%
dowhilenotrs.eof
%><trheight=30>
<tdaliqn=center><%=rs(',nane,,)%></td>
<tdalign=centerXZ寸八d〉
<tdalign=center><%=rs(',city,,)%X/td>
<tdalign=center><%=rs("time,,)%X/td>
</tr>
<%
rs.mouenext
loop
%>
</table>
</html>
图8.3l查询并显示结果
'Ahttp://localhost/yunlun/»vroot/test/asp04f.asp...
图8.32执行查询条件提交表单
5http://localhost/yunlun/«<root/test/asp04.asp
文件QF)编辑查看9收藏®工具(T)帮助公sr
地址也)▼http://localhost/yunlun/wwwroot/test/asp04.asp0份转到
张三8898002长沙2005-4-919:53:01
张三8898002上海2005-4-232:05:40
⑥完毕■2本地Intranet
图8.33显示查询结果
8.6记录的删除
本节学习掌握通过ASP页面对Access数据库表记录的删除操作。记录的删除操作可
使用SQL删除语句来实现。
假设数据exasp.mdb的users表的记录如卜.图:
图8.34users表记录
请看下面的例子:在一个表单中输入要删除记录的1D号,然后删除数据库表中与这
个输入值相同的ID的记录。
E'asp05f.asp-记事本匚叵]区]
文件9编辑起)格式Q)查看W帮助直)
<Fornname=,'Forn1,'nethod=',post,*action=*'asp05|.asp,>>
请输入删除记录ID:
<inputtype=,,texti,name=,,id,,>
<inputtype=,,subl^it,,nane=,,Submit,,ualue="确定'>>
</Forn>
图8.35删除条件提交表单
图8.34中,给出了提交删除申请的表单文件asp05f.asp,它向asp05.asp提交删除
条件数据。
图8.35中,给出了删除记录并显示剩余记录的代码。其中下面两行是关键性的代码。
exec=/,delete*fromuserswhereID=〃&request.form(〃id〃)
conn,executeexec
第一行给出用于删除的SQL语句字符串,其中条件是表中的ID字段值等于来自提交
表单的id变量值。第二行执行这个SQL删除语句。
其它代码包括前面的包括文件和记录集的定义和打开。后面的是用于显示剩余记录的
代码。
Pasp05.asp-记事本
文件国)编辑更)格式Q)查看W)帮助国)
<♦一^includeFile=conn.asp->
<%
exec=,'select*fromusers*'
setrs=seruer.createobjectf^adodb.recordset**)
rs.openexecyconn,1,1
exec=,'delete*fromuserswhereID="&request
conn.executeexec
%>
<html>
<body>
<tablewidth=,,1OO%*'border=",1*'cellspacing="1"
cellpadding=,,O,,>
<%
dowhilenotrs.eof
%><tr>
<tdX%=rs(,,ID")%></td>
<tdX%=rs("naine,,)V</td>
<tdX%=rs(,,tel,,)%X/td>
<td><Vrs("city,,)V</td>
<tdX%=rs("time,,)V</td>
</tr>
<%
rs.nouenext
loop
%>
</table>
</body>
</htnl>
图8.36删除记录并显示剩余汜录代码
下面来执行:
图&37执行提交表单并输入记录号
ID号为6的记录被删除剩余记录显示如下:
F
-…回回国―
?http://localhost/yunlun/xvroot/test/asp05.asp
文件编辑d)查看(V)收藏®工具①帮助出)静
地址①)▼莅]http://Iocalhost/yunlun/wwwroot/1est/asp05.aspV鱼转到
张
1三
2005-4-919:53:01
李
2四
2005-4-100:43:18
王
3五
赵
六2005-4-100:44:38
5
88332212005-4-151:22:12
18sdfadf|1111|dsf|2005-4-152:08:10
19第二方式^78787―海口12005-4-152:12:19
21张三88980021上—1005-4-232:05:40
⑥完毕■a本地Intranet
图&38执行提交表单并输入记录号
8.7记录的修改
修改记录是数据库基本操作之一。下面通过实例来学习修改记录,其中有三个ASP页
面:asp06f.asp(通过输入修改查询条件name来指定记录)、asp06.asp(找到并显示将
被修改的记录,且可进行修改数据提交)、asp06s.asp(更新记录,实际修改表)。
♦请看图8.39,其中通过表单提交name数据。
,asp06f.asp-记事本匚)叵]反|
文件9编辑⑥格式查看9帮助国)
<H3>记录的修改</H3〉<HR>
〈formname=*,Forn1,*method=''post''Iaction="asp06.asp*'>
请输入修改者姓名:
<inputtype=',text,*narne=",nane*'>
<inputtype="subnifnane=*'Submit,*ualue="确定”
</forn>
图8.39用于给出修改者姓名的提交表单
♦请看下面的图8.40中的代码。
其中有如下包含语句用于错误处理:
<!-#includefile=〃err.asp〃一>
err.asp文件有如下代码用于过滤错误信息,当田现错误时,代码继续运行。
<%
Response.Buffer=True
OnErrorResumeNext
%>
在后面用以下代码实现错误处理,如果出现错误则清除页面并给出提示信息:
<%IfErr.Number<>0Then
Response.Clear
Response.Write〃没有找到记录!〃
EndIf
%>
下面这一段代码先定义查询字符串,然后通过记录集对象打开查询并存放查询结果。
注意查询字符串中的where条件,name表示字段,后面跟一个字符串,所以要用单引号将
request,form("name")引起来,request,form("name")则是返回上面提交页面中的数据作
为查询值。
<%
exec二〃select*fromuserswherename='"&request.form("name")&〃'〃
setrs=server,createobject("adodb.recordset")
rs.openexec,conn
%>
接下来定义了一个表单。一方面这个表单得到rs的记录字段值;另一方面表单中的
这些值又可以修改,并可提交给asp06s.asp页面。
<formname=formlmethod=postaction=asp06s.asp>
编号<inputtype="text"name二〃ID〃value="。=rs(〃ID〃)%>〃>
姓名<inputtype二〃text“name="name"value=“〈斤rs(〃name〃)外>〃>
<br>
电话<inputtype="text〃name二〃tel〃value=“<%=rs
城市<inputtype二〃text〃name二〃city"value=“<%=rs(〃city〃)/>〃>
<inputtype=//submit"name="Submit"value=”确定〃X/td>
</form>
最后是关闭记录集和数据库连接对象。
<%
rs.close
setrs=nothing
conn,close
setconn=nothing
%>
Pasp06.asp-记事本13回区)
文件电)编辑超)格式⑥)查看W)帮助国)
<H3>修改记录<〃3><皿>
<?一0includeFile=,,err.asp"―>
<?--ttincludeFile=,,conn.asp**-->
<%
exec=,'select*Fromuserswherenarne='"ftrequest.Forin(,,nainef,)&
setrs=sprupr.crpatpohjpctciadodh.rpcordspf)
rs.openexec9conn
%>
<Fornname=''fornrT'method=''post''action=,,asp06s.asp'^
编号<inputtype="text,Bname—ID"ualue=",<%=rs("ID,,)%>">
姓名<inputtype=',text,iname=''naine''ualue=,,<%=rs(,,name,,)%>">
<br>
电话<inputtype=',texfualue='<*寸sr'tel,・)%>'>
城市<inputtype="text''nane=",city"ualue=,,<%=rs(,'city,,)%>,*>
<inputtype=,,subnitMname=,,Subnit,*ualue="确定"X/td)
</Forn>
<%IFErr.Number<>9Then
Response.Clear
Response.Write”没有找到记录
EndIF
%>
<%
rs.close
setrs=nothing
conn.close
setconn=nothing
%>
图8.40根据姓名找出并显示记录
♦请看下面的图8.41中的代码。
为了接受asp06.asp中经过修改后的记录数据,必须又要找到那条记录,这时通过前
面已找到的记录的ID来定位记录。注意,在用rs打开查询时用到了参数“1,3”。
exec二〃select*fromuserswhereID=〃&request.form(〃ID")
setrs=server,createobject("adodb.recordset")
rs.openexec,conn,1,3
接着用三条语句将修改后的三个字段值写入rs记录集中,再进行rs.update,更新数
据表,完成修改数据记录值。后面是关闭记录集和数据库连接对象,并提示记录修改成功。
rs(〃name〃)=request,form(,zname?/)
rs(/zterz)=request.form(〃tel〃)
rs(〃city〃)=request.form(〃city〃)
rs.update
rs.close
setrs=nothing
conn,close
setconn=nothing
response,write〃记录修改成功!〃
Easp06s.asp-记事本13回冈
文件9编辑⑥格式查看9帮助Qp
<?-ttincludefile="conn.asp"―>
<%
exec=,'select*FromuserswhereID="&request
setrs=seruer.createobjectC'adodb.recordset")
rs.openexec,conn,1,3
rs("name")=request.forn("name**)
rsCtel'^^request-fornCtel")
rs("city")=request.form("city")
rs.update
rs.close
setrs=nothing
conn.close
setconn=nothing
response.write”记录修改成功,”
图8.41修改记录
♦下面是示例演示的情况:
users:表13回冈
IDnameHicitytime
►0张三8898002长沙35-4-919:53:01
2李四8834990武汉35-4-100:43:18
3王五8787665郑州35-4-100:44:38
5赵六8833221大同35-4-151:22:12
18sdfadf1111dsf35-4-152:08:10
19第二方式878787海口35-4-152:12:19
21张三8898002上海35-4-232:05:40
米(自动编号)035-5-6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 含山县2024年安徽马鞍山含山县运漕镇招聘12人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 南宁市2024中共南宁市青秀区纪律检查委员会招聘2人(广西)笔试历年参考题库典型考点附带答案详解(3卷合一)
- 2025年集团综合管理部高级主管岗位招聘备考题库及答案详解一套
- 2025年东兴市人民政府备考题库中心招聘工作人员6人的备考题库及答案详解一套
- 天津2025年民生银行天津分行社会招聘备考题库及1套参考答案详解
- 2025年福州市公安局公开招聘第52期警务辅助人员备考题库及答案详解一套
- 2025年湛江市公安局霞山分局第三次招聘警务辅助人员的备考题库完整答案详解
- 2025年鹤壁能源化工职业学院公开招聘高层次人才备考题库完整参考答案详解
- 2025年施秉县马号镇中心卫生院公开招聘编外工作人员备考题库及答案详解参考
- 贵阳市公安机关2025年面向社会公开招聘第三批警务辅助人员备考题库及一套答案详解
- 水利工程运维投标方案(堤防、闸站、泵站)(技术标)
- 铁路工程道砟购销
- 2024年广东省广州市中考历史真题(原卷版)
- 壮医药线疗法
- 超星尔雅学习通《中国古代史(中央民族大学)》2024章节测试答案
- 项目4任务1-断路器开关特性试验
- (高清版)DZT 0215-2020 矿产地质勘查规范 煤
- 高层建筑消防安全培训课件
- 实验诊断学病例分析【范本模板】
- 西安交大少年班真题
- JJF(石化)006-2018漆膜弹性测定器校准规范
评论
0/150
提交评论