第12章 Web数据库的操作_第1页
第12章 Web数据库的操作_第2页
第12章 Web数据库的操作_第3页
第12章 Web数据库的操作_第4页
第12章 Web数据库的操作_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章

Web数据库的操作12.1数据库访问流程12.2数据库的连接12.3数据的查询控制12.4数据的添加、删除和修改本章学习目标l

ASP访问数据库的流程l

在ASP中连接数据库的4种方法l

数据库的常用查询方法l

如何确定用户的操作权限l

进行数据添加操作的方法l

进行数据删除操作的方法l

进行数据修改操作的方法12.1数据库访问流程进行数据源操作的步骤如下:(1)创建与数据库的连接,可以使用ADO中的Connection对象或RecordSet对象的相关属性和方法。(2)设定要操作数据库的命令,可以使用ADO中的Connection对象、Command对象或RecordSet对象的相关方法和属性来完成。(3)执行命令,可以使用ADO中的Connection对象、Command对象或RecordSet对象的相关方法。(4)得到数据后,就可以执行对数据的浏览、增加、删除、修改等操作,这一步通常使用RecordSet对象的有关方法和属性完成。

(5)关闭数据库,清除有关对象。返回首页图12-1ADO存取数据源流程返回本节12.2数据库的连接(1)在Connection对象中设置ConnectionSTRing参数时,可以通过设置系统数据源(SystemDSN),即通过设置ODBC的方法来连接数据库。关于DSN的设定请参阅前面的章节。在ASP中利用DSN连接数据库的代码如下:Setconn=Server.CreateObject("ADODB.Connection")conn.Open"DSN=txl;UID=sa;PWD=;Database=txl"(2)如果不采用DSN连接数据库,在设置ConnectionSTRing参数时,可以采用直接指定ODBC驱动程序连接数据库,连接SQLServer数据库的代码如下:Setconn=Server.CreateObject("ADODB.Connection")sTRProvider="Driver={SQLServer};Server=zjf;Database=txl;UID=sa;PWD=;"conn.OpensTRProvider返回首页(3)通过OLEDB连接。代码如下:Setconn=Server.CreateObject("ADODB.Connection")sTRPro="Provider=sqloledb;DataSource=zjf;InitialCatalog=txl;UserID=sa;Password=;"conn.OpensTRPro(4)在其他对象中,也可以通过设置ActiveConnection参数,完成对数据源连接的设置。以常用的RecordSet对象为例,可以使用该对象的Open方法,利用设置好的ActiveConnection参数完成对数据库的连接,程序代码如下:Setrs=Server.CreateObject("ADODB.RecordSet")rs.Open"t_student","Provider=sqloledb;DataSource=zjf;InitialCatalog"&_"=txl;UserID=sa;Password=;",adOpenStatic,adLockreadOnly,adCmdTable返回本节12.3数据的查询控制数据库在网络中的应用大部分集中在数据的查询操作上。数据查询需要使用ADO对象中的Connection对象和RecordSet对象。进行数据查询时,主要使用SQL语句中的Select语句,通过该语句就可以得到所要查询的数据记录。下面的例子将介绍如何利用Session对象和RecordSet对象的AbsolutePosition属性以一页或一条为单位来浏览查询结果。返回首页例12-1:第1步:建立ASP查询,文件名为select.asp。在这个查询中,使用了Session对象存储RecordSet对象,数据库的连接使用了RecordSet对象的Open方法。程序代码如下:<!--#includefile=adovbs.inc--><HTML><BODYbgcolor="#ccffcc"><%'设置每一页所要显示的记录条数,这里为9条。Session("flag")=9'用RecordSet对象的Open方法连接数据库SetSession("rs")=Server.CreateObject("Adodb.recordSet")Constr="Provider=sqloledb;DataSource=zjf;InitialCatalog=txl;UserID=sa;Password=;"Session("rs").cursorlocation=aduseclientsql="select*fromt_studentorderbyt_number"'利用RecordSet对象的Open方法创建记录集Session("rs").Opensql,Constr,adOpenkeySet,adlockreadonly,adcmdtext%><%'输出表头,由于数据库中的字段名称为英文,因此,采用HTML标记输出%><TABLEborder="1"bordercolor="#000000"cellspacing="1"cellpadding="0"align="center"><TRalign=centervalign=middleheight=23><TD><B>学号</B></TD><TD><B>姓名</B></TD><TD><B>性别</B></TD><TD><B>电话</B></TD><TD><B>籍贯</B></TD><TD><B>班级</B></TD><TD><B>民族</B></TD></TR><%'记录开始时,当前数据指针在RecordSet对象的位置

Session("start")=Session("rs").AbsolutePosition'输出表中的数据Forj=0ToSession("flag")-1Response.Write"<TRalign=centervalign=middle>"'记录结束时,当前数据指针在RecordSet对象的位置

Session("End")=Session("rs").Absoluteposition'其中Session("rs").fields.count表示表的字段数

Fori=0ToSession("rs").fields.count-1'把当前的数据记录显示出来

Response.Write"<TD>"&Session("rs").fields(i).value&"</TD>"NextResponse.Write"</TR>"'移到下一条数据记录,然后判断是否到表尾,如果是,则把数据指针移到表头

Session("rs").MoveNext

IfSession("rs").EofThenSession("rs").MovePrevious

ExitForEndIfNextResponse.Write"</TABLE>"%><%'引入另一个文件,完成翻页功能%><!--#includefile=link.asp-->第2步:建立具有翻页功能的ASP程序,文件名为link.asp。该文件将显示“上一页”、“下一页”、“开始记录”、“结束记录”和“数据总条数”等信息,并完成一定的链接关系,如“上一页”及“下一页”加入了超链接。注意:当记录指针位于第一页时,“上一页”没有超链接,而当记录指针位于最后一页时,“下一页”没有超链接。程序代码如下:<%Response.Write"<BR>数据总条数:"&Session("rs").RecordCount&""'判断是否到表尾或记录解释否,如果是,则只给“上一页”加上超链接If(Session("rs").Eof)or(Session("End")>=Session("rs").RecordCount)ThenResponse.Write"[<Ahref=""Query.asp?Method=Previous"">上一页</A>|"Response.Write"下一页]"'否则看是不是表头,如果是则只给“下一页”加上超链接ElseIf((Session("rs").Bof)or(Session("start")=1))ThenResponse.Write"[上一页|"

Response.Write"<Ahref=""Query.asp?Method=Next"">下一页</A>]"'其他情况,都加上超链接ElseResponse.Write"[<Ahref=""Query.asp?Method=Previous"">上一页</A>|"Response.Write"<Ahref=""Query.asp?Method=Next"">下一页</A>]"EndIfResponse.Write"开始记录:"&Session("Start")&",结束记录:"&Session("End")&"。"%>第3步:建立显示“上一页”或“下一页”功能的ASP程序,文件名为Query.asp。在该程序中将继续显示表中的数据。程序中使用MoveNext方法和MovePrevious方法完成数据指针的定位。代码如下:<!--#includefile=adovbs.inc--><HTML><BODYbgcolor="#ccffcc"><%'显示表头%><TABLEborder="1"bordercolor="#000000"cellspacing="1"cellpadding="0"align="center"><TRalign=centervalign=middleheight=23><TD><B>学号</B></TD><TD><B>姓名</B></TD><TD><B>性别</B></TD><TD><B>电话</B></TD><TD><B>籍贯</B></TD><TD><B>班级</B></TD><TD><B>民族</B></TD></TR><%'将数据指针移到要求的位置,先移到头,再使用MoveNext往下移IfRequest("Method")="Previous"Thenifsession("end")=Session("rs").AbsolutePositionthencount=session("end")-session("start")+9elsecount=Session("Flag")*2endifFori=1TocountSession("rs").MovePrevious

IfSession("rs").BofThenSession("rs").MoveNext

ExitForEndIf

NextEndIf'记录数据的起始位置。Session("Start")=Session("rs").AbsolutePosition'显示表中指定数据Forj=0ToSession("Flag")-1Response.Write"<TRalign=centervalign=middle>"Session("End")=Session("rs").AbsolutePosition

'显示当前数据记录。

Fori=0ToSession("rs").Fields.count-1Response.Write"<TD>"&Session("rs")(i).Value&"</TD>"NextResponse.Write"</TR>"Session("rs").MoveNext

IfSession("rs").EofThenSession("rs").MovePrevious

ExitForEndIfNEXTResponse.Write"</TABLE>"%></BODY><!--#includeFile=link.asp-->通过浏览器运行程序select.asp,显示结果如图12-2所示。图12-2数据控制程序结果1:显示首记录图12-3数据控制程序结果2:显示表中最后的数据记录返回本节12.4数据的添加、删除和修改12.4.1用户操作权限12.4.2数据的添加12.4.3数据的删除12.4.4数据的修改返回首页12.4.1用户操作权限1.确认用户的权限可以先将用户的名称、密码和权限代码存放在一个数据表中,当用户登录网站时,确认用户名和密码后,从数据库中取得该用户的权限代码,然后利用Session变量标识该用户。假设用户的相关信息都存放在表users中,程序代码如下:<%'取得用户输入的用户名和密码,并去掉空格sTRUserName=Trim(Request.Form("Username"))sTRUserPassword=Trim(Request.Form("Userpassword"))'创建与数据库的连接SetobjDBConn=Server.Createobject("ADODB.Connection")sTRProvider="Provider=sqloledb;DataSource=zjf;InitialCatalog=txl;UserID=sa;Password=;"objdbconn.OpensTRProvider'SQL查询字符串sTRSQL="SELECT*FROMt_userWHEREUserName='"&sTRUserName&"'"SetobjRS=objDBConn.Execute(sTRSQL)'检查用户IfobjRS.EOFThen'无此用户

Response.Redirect"UserLogin.asp"ElseIfTrim(objRS("UserPassword"))=sTRUserPasswordThen'密码正确,找到用户

Session("UserName")=objRS("UserName")

Session("UserLevel")=objRS("UserLevel")'进入网站的网页

Response.Redirect"main.asp"Else'密码错误

Response.Redirect"UserLogin.asp"EndIfSetobjRS=NothingSetobjDBConn=Nothing%>2.确认用户的操作在其他需要验证用户的页面通过该Session变量识别用户,代码如下:IfSession("UserLevel")<1ThenResponse.Redirect"Error.asp"EndIf图12-5用户没有操作权限返回本节12.4.2数据的添加在网站中,经常有添加数据记录的需求。如一个提供电子邮件服务的网站,常常有人申请加入,这时就要用到添加用户资料的功能。添加数据记录的方法很多,这里主要介绍两种。一种是利用SQL语句中的Insert命令,另一种是利用ADO对象之一的RecordSet对象的AddNew方法。例12-3:第1步:首先创建一个添加数据的页面(INPUT.htm),在该页面中详细列出用户需输入的项目。其代码如下:<HTML><BODYbgcolor="#ccffcc"><H2align=center>学

入</H2><HR><Formmethod=POSTname=addaction="d_ins.asp"><DIValign=center><TABLEborder=0><TR><TDheight="41">姓名:</TD><TD><inputtype="text"name="name"size="20"></TD></TR><TR><TDheight="35">学号:</TD><TD><inputtype="text"name="number"size="20"></TD></TR><TR><TDheight="36">班级:</TD><TD><INPUTtype="text"name="class"size="20"></TD></TR><TR><TDheight="34">性别:</TD><TD><SELECTsize="1"name="sex"> <OPTIONselectedvalue="男">男</OPTION> <OPTIONvaluve="女">女</OPTION> </SELECT></TD></TR><TR><TDheight="33">民族:</TD><TD><INPUTtype="text"name="minzu"size="20"></TD></TR><TR><TDheight="39">籍贯:</TD><TD><inputtype="text"name="jiguan"size="20"></TD></TR><TR><TDheight="37">联系电话:</TD><TD><INPUTtype="text"name="phone"size="20"></TD></TR></TABLE><INPUTtype=submitvalue="确定"name=B1><INPUTtype=reSetvalue="重填"name=B2></DIV></Form></BODY></HTML>图12-6输入页面显示第2步:建立表单处理程序(d_ins.asp),在该程序中利用SQL语句中的Insert命令添加数据记录。这里将示范使用Connection对象的Execute方法运行Insert命令。<%onerrorresumeNext'取得用户输入的数据t_name=request.form("name")t_number=request.form("number")t_class=request.form("class")t_sex=request.form("sex")t_minzu=request.form("minzu")t_phone=request.form("phone")t_jiguan=request.form("jiguan")'创建数据库的连接Setconn=Server.CreateObject("ADODB.Connection")strProvider="Provider=sqloledb;DataSource=zjf;InitialCatalog=txl;UserID=sa;Password=;"conn.OpenstrProvider'添加时使用的字段fields=array("t_name","t_number","t_class","t_sex","t_mizu","t_phone","t_jiguan")values=array(t_name,t_number,t_class,t_sex,t_minzu,t_phone,t_jiguan)sql="INSERTINTOt_student("&Join(fields,",")&")VALUES('"&_Join(values,"','")&"')"'添加数据conn.Executesql'判断执行是否成功Ifconn.Errors.Count>0ThenResponse.Write"系统发生"&conn.errors.Count&"个错误!"ElseResponse.Write"数据添加成功!"EndIfSetconn=nothing%>图12-7数据录入正确和错误的显示第3步:在添加数据时还可以利用RecordSet对象的AddNew方法增加数据记录。程序代码如下:<!--#includefile=adovbs.inc--><%'取得用户输入的数据t_name=request.form("name")t_number=request.form("number")t_class=request.form("class")t_sex=request.form("sex")t_minzu=request.form("minzu")t_phone=request.form("phone")t_jiguan=request.form("jiguan")'创建数据库的连接

Setconn=Server.CreateObject("ADODB.Connection")strProvider="Provider=sqloledb;DataSource=zjf;InitialCatalog=txl;UserID=sa;Password=;"conn.OpenstrProvider'建立RecordSet对象Setrs=Server.createObject("ADODB.RecordSet")'启动指定的数据表,注意要AdLockOptimistic方式打开rs.Open"t_student",strProvider,adOpenkeySet,adlockOptimistic'添加一条数据记录rs.AddNewrs("t_number").value=t_numberrs("t_name").value=t_namers("t_sex").value=t_sexrs("t_class").value=t_classrs("t_mizu").value=t_minzurs("t_phone").value=t_phoners("t_jiguan").value=t_jiguan'将数据记录回存到表中rs.UpdateSetrs=nothingSetconn=nothing%>注意:不能以只读方式打开表。返回本节12.4.3数据的删除例12-4:第1步:建立删除页面,在该页面中可以选择删除的记录。其显示结果如下图12-8所示。第2步:建立数据删除程序,可以利用SQL的Delete命令删除数据记录。程序代码如下:<%'创建数据库的连接Setconn=Server.CreateObject("ADODB.Connection")strProvider="Provider=sqloledb;DataSource=zjf;InitialCatalog=txl;UserID=sa;Password=;"conn.OpenstrProvider'取得被删除记录的标识t_number=Request("delid")'设定执行的SQL语句sql="DELETEFROMt_studentWHEREt_number="&t_number'执行删除操作conn.executesqlResponse.Write"该记录已成功删除!"Setconn=nothing%>第3步:在删除记录时,还可以利用RecordSet对象的Delete方法来删除表中的数据记录,如果要删除的记录可能不止一个,应该采用UpdateBatch方法。程序代码如下:<!--#includefile=adovbs.inc--><%'取得被删除记录的标识t_number=Trim(Request("delid"))'创建数据库的连接Setconn=Server.CreateObject("ADODB.Connection")strProvider="Provider=sqloledb;DataSource=zjf;InitialCatalog=txl;UserID=sa;Password=;"conn.OpenstrProvider'建立RecordSet对象Setrs=Server.CreateObject("ADODB.RecordSet")'启动指定的数据表,注意要AdLockOptimistic方式打开rs.Open"t_student",Conn,adOpenkeySet,adlockOptimistic'利用循环检查记录,找到符合条件的记录,删除WhileNOTrs.EOFIftrim(rs("t_number").value)=t_numberThen

rs.Delete EndIf

rs.MoveNextWend'将数据回存到数据库中rs.UpdateBatchrs.CloseSetconn=nothingSetrs=nothing%>返回本节12.4.4数据的修改例12-5:第1步:建立数据修改页面。在修改数据时,应该向用户显示当前所选择记录的内容,便于修改。因此,在程序的代码中除了能够获得被操作的记录外(如上节所示),还要回显记录内容。程序代码如下所示:<!--#includefile=adovbs.inc--><%'取得被编辑记录的标识t_number=Request("editid")'创建数据库的连接Setconn=Server.CreateObject("ADODB.Connection")strProvider="Provider=sqloledb;DataSource=zjf;InitialCatalog=txl;UserID=sa;Password=;"conn.OpenstrProvider'建立RecordSet对象Setrs=Server.createObject("ADODB.RecordSet")'启动指定的数据表rs.Open"select*fromt_studentwheret_number="&_t_number,conn,adOpenkeySet,adlockOptimistic'获得记录值t_name=rs("t_name")t_number=rs("t_number")t_class=rs("t_class")t_sex=rs("t_sex")t_minzu=rs("t_mizu")t_phone=rs("t_phone")t_jiguan=rs("t_jiguan")%><HTML><BODYbgcolor="#ccffcc"onload="page_onload();"><H2align=center>学

入</H2><HR><Formmethod=POSTname=addaction="d_edit.asp"><%'输出记录内容%><divalign=center><TABLEborder=0><tr><tdheight="41">姓名:</td><td><inputtype="text"name="name"size="20"value="<%=Server.HTMLEncode(t_name)%>"></td></tr><tr><tdheight="35">学号:</td><td><inputtype="text"name="number"size="20"value="<%=Server.HTMLEncode(t_number)%>"></td></tr><tr><tdheight="36">班级:</td><td><inputtype="text"name="class"size="20"value="<%=Server.HTMLEncode(t_class)%>"></td></tr><tr><tdheight="34">性别:</td><td><selectsize="1"name="sex"> <optionvalue="<%=Server.HTMLEncode(t_sex)%>"> <%=Server.HTMLEncode(t_sex)%></option> <optionvalue="男">男</option> <optionvaluve="女">女</option> </select></td></tr><tr><tdheight="33">民族:</td><td><inputtype="text"name="minzu"size="20"value="<%=Server.HTMLEncode(t_minzu)%>"></td></tr><tr><tdheight="39">籍贯:</td><td><inputtype="text"name="jiguan"size="20"value="<%=Server.HTMLEncode(t_jiguan)%>"></td></tr><tr><tdheight="37">联系电话:</td><td><inputtype="text"name="phone"size="20"value="<%=Server.HTMLEncode(t_phone)%>"></td></tr></TABLE><INPUTtype=submitvalue="确定"name=B1><INPUTtype=reSetvalue="重填"name=B2></div></Form><%Setconn=nothing%></BODY></HTML>在上例中,显示每个字段的同时显示了其对应的取值,在图12-7的页面中选择“修改”后,屏幕显示如图12-9所示。图12-9修改页面显示第2步:建立数据修改程序。可以利用SQL语句中的Update命令修改表中的记录,程序代码如下:<!--#includefile=adovbs.inc--><%'取得用户输入的数据t_name=Trim(request.form("name"))t_number=Trim(request.form("number"))t_class=Trim(request.form("class"))t_sex=Trim(request.form("sex"))t_minzu=Trim(request.form("minzu"))t_phone=Trim(request.form("phone"))t_jiguan=Trim(request.form("jiguan"))'创建数据库的连接Setconn=Server.CreateObject("ADODB.Connection")strProvider="Provider=sqloledb;DataSource=zjf;InitialCatalog=txl;UserID=sa;Password=;"conn.OpenstrProvider'设置修改时的SQL语句field=array("t_name","t_number","t_class","t_sex","t_mizu","t_phone","t_ji

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论