网络技术asp与ado对象_第1页
网络技术asp与ado对象_第2页
网络技术asp与ado对象_第3页
网络技术asp与ado对象_第4页
网络技术asp与ado对象_第5页
已阅读5页,还剩203页未读 继续免费阅读

下载本文档

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

文档简介

8.1ASP对象8.2ADO对象8.3ASP对象的应用8.4建立与数据库的连接8.5访问数据库中的数据8.6在客户端访问数据库8.7用Command对象改善查询8.8ASP与ADO对象的综合应用第8章ASP与ADO对象及其应用返回主目录

第一讲教学目标:了解ASP及ADO对象的属性、方法教学内容:8.1ASP对象、8.2ADO对象教学重点与难点:ASP及ADO对象的属性和方法教学方法和手段:讲述法,多媒体教学教学时数:2学时教学过程:第8章ASP与ADO对象及其应用返回主目录第8章ASP与ADO对象及其应用

8.1ASP对象

ASP对象可分为内建组件和外挂组件。内建组件是指组件本身建于ASP中,使用时不需要给予定义,即可执行。最常用的内建组件有:Application、Session、Response、Request以及Server五种。关于这些组件的使用,将在8.3节介绍。

ASP在存取数据库时,经常使用ADO(ActiveXDataObject)技术和ASP结合。在网页上不但可以建立数据库的网页内容,还可以在网页里执行SQL(结构化查询语言)的操作,在网页上对数据库进行查询、删除以及新增等操作。与ADO相结合应用的ASP对象即是外挂组件。ADO里的三个主要对象为:Connection、Recordset和Command。

内建组件和外挂组件列于表8-1。

1.Application对象

Application对象是可以让所有用户一起使用的对象。使用Application对象,所有用户都可以存取Application所定义的同一个名称的参数,所有用户可以同时得到某一项信息。

Application对象共有两个事件程序,要注意的是,这两个事件程序都必须在Global.asa的文件里使用(1)OnStart。当第一位用户使用系统时,就会启动这个事件程序里的叙述。(2)OnEnd。当第一位用户离开系统时,就会启动这个事件程序里的叙述。表8-1ASP内建组件和外挂组件内建组件ApplicationSessionResponseRequestServer外挂组件ConnectionRecordsetCommand

使用Application对象的方法有以下两种:(1)Application.Lock。将Application对象所含有的信息锁定,不准其他用户来修改。(2)Application.Unlock。将Application对象锁定的信息开放,其他用户进行修改的操作。对于锁定的信息,若在程序里没有用此方法设定将其回复,那么在执行时间结束或Script执行结束时,也会自动恢复为不锁定的状态。

2.Session对象

Session对象跟Application对象相反,是适用于单一用户的信息。Session对象里的信息,只能让同一位用户进行修改的操作,而且只有当用户的浏览器支持cookie的功能时,Session对象的功能才能被使用。

Session对象和Application对象一样,也有两个事件程序,这两个事件程序也必须在Global.asa的文件里使用。(1)OnStart。当用户浏览系统时,服务器会自动产生一个Session对象。(2)OnEnd。当用户离开系统或者网页执行时间过期时,都会结束Session对象。

Session对象有以下一些属性与方法。

(1)CodePage:可以让系统处理不同国家的文字。但如果网站是使用NT默认的语言,则需要设定此一属性,就可以处理不同国家的文字。(2)LCID:返回用户的国家标准地区识别码。(3)SessioID:返回用户的代码。这个代码是唯一的,仅能代表一位使用者。(4)Timeout:设定执行的时间,默认值为20分钟。(5)Abandon方法:强迫结束Session。

3.Response对象

Response对象可以让信息显示在浏览器窗口,将信息传达给用户。最常用的语法是在程序输入处输入:Response.write"目前上网的人数:"&UserWrite的属性就是将后面所接的文字显示在屏幕上。

1)Response对象的一些属性

(1)Buffer:将信息存储至缓冲器,直到服务器将此ASP文件处理完毕,才会转到用户的画面。必须在ASP程序代码的第一行中设定。

(2)ContentType:设定传送信息为HTTP类型。

(3)Expires:设定网页的期限,一旦过期,用户就不可以再浏览此画面。

(4)ExpiresAbsolute:设定网页的期限的日期时间,一旦过期,用户不可以再次浏览此画面。(5)Status:设定HTTP协议。

2)Response对象常用方法(1)AddHeader:添加一个HTTP头到响应中。(2)AppendToLog:将一字符串加到WebServerLog文件的结尾。每行最多80字符,但此一字符串不可有逗号。(3)BinaryWrite:传送二进制的数据。(4)Clear:将在缓冲器里的信息清除。(5)End:结束ASP文件的执行,并且将缓冲器里的信息送到用户的画面。

(6)Flush:立刻将缓冲器的信息送到用户的画面。(7)Redirect:链接到某一特定的URL地址。(8)Write:最常用的方法,将某一特定的字符串传达到用户的画面。可以是任何数据类型,但是不能超过1022字符。

4.Request对象

Request对象用来取得用户所输入的信息,经常和Response成对使用。当我们制作出一个可供用户输入信息的交互式网页时,利用Request对象就可以很方便地取得用户所输入的信息。

Request对象有以下属性与方法。

(1)TotalBytes属性:读出的字节总数。(2)BinaryRead方法:读取所输入的数据,并将这些数据存储在SafeArray里。(3)Form方法:读取表单文本输入框中的信息。

5.Server对象

Server对象总是与其它的对象搭配使用。比如与ADO对象搭配,可以与数据库文件产生链接。

1)Server对象的ScriptTimeout属性

设定Script的执行时间。如果超过此时间,那么就会产生错误,并且停止Script的执行。

2)Server对象的方法(1)CreateObject:定义ASP对象。(2)HTMLEncode:采用HTML的编码法。(3)MapPath:将路径转换为物理路径。但是它不能分辨是否真有这样一种路径。(4)URLEncode:采用URL的编码法。8.2ADO对象

1.Connection对象

Connection对象是协助ASP链接到数据库的一个对象,通过和DataSourceName(DSN)的结合,就可以对所选定的数据库产生链接的通道。

1)Connection对象的常用属性(1)Attributes:设定对象的特性,默认值为0。(2)CommandTimeout:设定执行指令的时间(默认值30秒)。若超出此设定时间,就会产生错误信息,并中断执行。(3)ConnectionString:设定链接的信息,例如设定文件名称、密码及用户名称等。

(4)ConnectionTimeout:设定链接的时间(默认值15秒)。若超出此设定时间,就会产生错误并中断链接。

(5)DefaultDatabase:默认链接的数据库。

(6)IsolationLevel:设定Transaction(事务处理)的隔离作用域。

(7)Mode:设定可否更改目前的数据。例如,1——只允许读出;2——只允许写入。

(8)Provider:选择OLEDB的提供者。

(9)Version:读取目前使用ADO的版本。2)Connection对象常用方法(1)BeginTrans:用来管理Transaction(事务处理)的操作之一,是开始新事务的操作。(2)Close:用来关闭目前被打开的链接对象。(3)CommitTrans:用来管理Transaction(事务处理)的操作之一,是结束并存储目前事务的操作。(4)Execute:用来执行所设定的操作,例如查询指令。(5)Open:用来建立与数据库来源的链接。(6)RollbackTrans:事务回滚,用来管理Transaction(事务处理)的操作之一。目的是取消目前事务的操作。

3.Recordset对象

Recordset对象用于数据的查询操作。Recordset对象将在所链接的数据库文件里,形成一个指针,指向数据库文件里的数据,然后可以利用Recordset对象所含有的方法,在数据库文件里,上下移动这个指针,移到想要查询的数据记录上。

Recordset对象有以下常用属性与方法。

1)Recordset对象的常用属性(1)AbsolutePage:表示目前数据记录在页数中的位置,位于第几页。(2)AbsolutePosition:表示目前数据记录在页数中的位置,位于第几项。

(3)ActiveConnection:设定Recordset所属的Connection对象。(4)BOF:表示数据记录的开头。(5)Bookmark:设定书签记号。目的是为了记录目前数据记录的位置,以便将来在程序中也能快速地回到这个位置的数据记录。(6)CacheSize:表示暂存于内存的数据记录数量。(7)CursorType:Recordset的游标模式。(8)EditMode:设定目前数据记录的编辑状态。(9)EOF:与BOF相反,指数据记录的结尾。

(10)Filter:设定过滤条件。(11)LockType:表示目前数据记录的锁定状态。(12)MaxRecords:表示查询结果的最多记录数。(13)PageCount:显示数据记录共有多少页。(14)PageSize:显示数据记录每页的记录数量。(14)RecordCount:显示数据记录所有的记录数量。(15)Source:设定数据来源。(16)Status:显示目前数据记录的状态。其中有关每页数据记录数量的属性,应设定在一个网页里。利用下一页、上一页按钮,还可以显示更多的数据记录。2)Recordset对象的常用方法(1)AddNew:在数据库里增加一项新的数据记录。(2)CancelBatch:取消一个批次的更新记录。(3)CancelUpdate:取消Update方法对数据记录所进行的更新操作。(4)Clone:复制另一个Recordset的数据记录。(5)Close:关闭已打开的对象。(6)Delete:删除目前的数据记录。(7)GetRows:将多项记录读入数组之中。

(8)Move:移动数据记录的位置。(9)MoveFirst:将目前数据记录指针移动到第一项数据的位置。(10)Movelast:将目前数据记录指针移动到最后项数据的位置。(11)MoveNext:将目前数据记录指针移动到下一项数据的位置。(12)MovePrevious:将目前数据记录指针移动到前一项数据的位置。(13)NextRecordset:消除目前Recordset对象,并且执行下一个指令。

(14)Open:打开指针(cursor)(15)Requery:重新执行查询,并且更新数据记录的数据。(16)Resyne:与数据库做同步的操作,从数据库更新Recordset的数据记录。(17)Supports:设定是否提供其它特别功能。(18)Update:将变动的数据更新到数据库里。(19)UpdateBatch:将变动的批处理数据更新到数据库里。

3.Command对象

Command对象用于数据库传送的命令,并对数据库进行存取操作。可以说,Command是介于Connection对象与Recordset对象之间,目的是强化对数据库的操作能力和提高存取数据库的能力。

Command对象常用的属性有:

(1)ActiveConnection:设定与Connection对象的链接。(2)CommandType:设定所下达命令的类型。(3)CommandText:设定SQL命令。作业:p231:1、2第二讲教学目标:掌握ASP对象的各种属性、方法的使用教学内容:ASP对象的应用;访问数据库的方法教学重点与难点:数据库访问的方法教学方法与手段:举例法,利用投影仪教学教学时数:2学时教学过程:8.3ASP对象的应用

1.使用Request对象的Form方法得到POST方法的数据

使用Request对象的Form方法可以得到POST方法从浏览器传递来的值。这些值是由Form表单提交的。利用Form表单,可将文本框、按钮、选项按钮、复选框与单选框中输入的用户信息,在用户按“提交”按钮后传递给服务器。可以说,Request对象为ASP程序提供了加工的“原材料”,没有Request对象,ASP程序就失去了与客户端联系的交互能力,因此,我们可以把Request想象为ASP的眼睛和耳朵。注意,ASP语句以<%作为开始,以%>作为结束。

例8-1.asp,Request对象的Form方法是如何得到客户端数据的。<%@Language="VBScript"%><html>晚上好,欢迎光临我的主页,请填写以下信息:<formmethod="post"action="8-1.asp"><p>姓名<inputname="xname">地址<inputname="dname"><p>性别:<inputname="title"type=radiovalue="mr">先生<inputname="title"type=radiovalue="ms">女士<p><inputtype=submitvalue=提交查询内容><inputtype=resetvalue=重置></form><%title=request.form("title")%><%selectcasetitle%><%case"mr"%>欢迎你先生<%=request.form("xname")%><%case"ms"%>欢迎你女士<%=request.form("xname")%><%endselect%></script></body></html>

运行8-1.asp文件后,在浏览器里首先看到图8-1所示的画面,在姓名、地址栏里可任意填写,性别在单选框中选择,然后单击[提交查询内容]按钮,可以看到图8-2所示的画面。

2.使用Request对象的QueryString方法得到GET方法的数据

当HTML表单使用GET方法向ASP文件传递数据时,数据可由Request对象的QueryString方法接收。例8-2.asp,建立一个输入页面。

<html><body>

欢迎光临我的主页,请填写以下信息:图8-1在客户端输入数据图8-2在服务器处理后输出的数据<formmethod="get"action="8-3.asp"><p>姓名:<inputname="xm"><p>口令:<inputname="kl"type="password"><p><inputtype=submitvalue=提交><inputtype=resetvalue=重置></form></body></html>8-2.asp文件在浏览器中的显示结果如图8-3所示。

例8-3.asp,显示用户输入信息的文件。<html><body><%kl=Request.Querystring("kl")xm=Request.Querystring("kl")图8-3建立一个输入画面ifkl="1234"then%>欢迎你!<%=xm%>朋友!<%else%>你的口令不对!请重新输入。<P>你刚才输入的口令是:<%=kl%><%endif%></body></html>8-3.asp文件在浏览器中的显示结果如图8-4所示。

3.向客户端输出数据的Response对象与Response获得客户端HTTP信息相反,Response对象用来控制发送给用户的信息,包括直接发送信息给浏览器、重定向浏览器到另一个URL。Response对象可以把ASP程序加工后的“产品”发送给用户,让他们可以看见结果。

1)直接输出信息的Reponse.Write方法当要从服务器传送资料到客户端时,可应用Reponse.Write方法。例8-4.asp,使用Reponse对象的Write方法传送资料到用户的浏览器中。<html><body><table><%callb%></table><%calla%></body><imgsrc="file"//g:\zhu\7.bmp"></html><scriptlanguage=vbscriptrunat=server>subaResponse.write"您好"EndsubFunctionbDimxx=now()Response.writexEndfunction</script>8-4.asp文件在浏览器中的显示结果如图8-5所示。2)指向新网址的Response.Redirect方法在浏览当中可以引导客户端到另一个URL位置。例8-5.asp,一个多项选择页面。<html><body>请选择你要去的地方<formaction="8-6.asp"method="get"><selectname="w"><optionvalue="s1"selected>新浪网图8-5返回客户端的信息<optionvalue="s2">中国人<optionvalue="s3">搜狐<optionvalue="s4">湖南大学<inputtype="submit"value="go"id=submit1name=submit></select></form></body></html>

8-5.asp文件在浏览器中的显示结果如图8-6所示。图8-6返回客户端的信息例8-6.asp,执行多项选择的结果。<%Response.Buffer=true%><html><body><%selectcaseRequest.Querystring("w")case"s1"Response.Redirect""case"s2"Response.Redirect""case"s3"Response.Redirect""case"s4"Response.Redirect""CaseelseResponse.Redirect"8-5.asp"Endselect%></body></html>

8-6.asp文件在浏览器中的显示结果如图8-7所示。图8-7湖南大学主页

4.ASP对象综合应用

下面我们通过一个聊天室的例子来说明ASP对象Application、Session、Response、Request及Server的综合应用。这里用到了5个文件,一个是Global.asa文件,另外四个是default.asp(主文件)、display.asp(自动滚动显示信息文件)、message.asp(不滚动显示信息文件)和logoff.asp(用户离开时的文件),这5个文件保存在wwwroot的asp文件夹中。例8-7Global.asa文件

<scriptlanguage=vbscriptrunat=Server>'每次启动服务器,清空最近10条聊天记录

subapplication_onstartfori=1to10application("txti")=""'application("txt2")=""'application("txt3")=""nextendsub</script>

例8-8default.asp(主文件)、display.asp(自动滚动显示信息文件)、message.asp(不滚动显示信息文件)和logoff.asp(用户离开时的文件)’default.asp(主文件)

<html><head><title>charlogin</title><title>简单的聊天室</title></head><framesetrows="180,70"frameborder="0"border="false"><noframes><bodybgcolor="#ffffff"text="#000000"link="#ff0000"vlink="#ff0000">'如果没有输入昵称,则提示输入昵称<%iflen(request.cookies("nick"))=0andlen(request.form("nick"))=0then%><p><br><center>请输入你的昵称:</center><formmethod="post"action="default.asp"><center><inputname="nick"type="text"size=10></center><center><inputtype="submit"value="进入聊天室"></center></form>'聊天室显示窗口的布局

<p>

设置为自动滚动

<p>'设置为不滚动

</body></noframes><framesrc="display.asp"scrolling="auto"><framesrc="message.asp"scrolling="no">

</frameset></html><%elseresponse.cookies("nick")=request.form("nick")'锁定application,进行滚动移动聊天的语句

application.lockapplication("txt10")=application("txt9")application("txt9")=application("txt8")application("txt8")=application("txt7")

application("txt7")=application("txt6")application("txt6")=application("txt5")application("txt5")=application("txt4")application("txt4")=application("txt3")application("txt3")=application("txt2")application("txt2")=application("txt1")'显示某个聊天者进入聊天室的提示appliction("txt1")="<fontcolor=""#0000ff"">**"&request.form("nick")&"兴致勃勃地走进了聊天室!**</font>"application.unlock%><%endif%>’display.asp(自动滚动显示信息文件)<html><head><metahttp-equiv="refresh"content="10;display.asp"></head><bodybgcolor="#ffffff"text="#000000"link="#ff0000"vlink="#ff0000"><%'每隔10秒对聊天信息刷新一次%><p><fontsize=2><%'依次显示最近的10条聊天信息%><%=application("txt10")%><br><%=application("txt9")%><br><%=application("txt8")%><br>

<%=application("txt7")%><br><%=application("txt6")%><br><%=application("txt5")%><br><%=application("txt4")%><br><%=application("txt3")%><br><%=application("txt2")%><br><%=application("txt1")%><br>

</font></body></html>

’message.asp(不滚动显示信息文件)<%ifnotrequest.form("message")=""then'如果聊天者输入的信息不为空,实现屏幕信息的显示和滚动

application.lockapplication("txt10")=application("txt9")application("txt9")=application("txt8")

application("txt8")=application("txt7")application("txt7")=application("txt6")application("txt6")=application("txt5")application("txt5")=application("txt4")application("txt4")=application("txt3")application("txt3")=application("txt2")application("txt2")=application("txt1")application("txt1")="<b>"&request.cookies("nick")&":</b>"&request.form("message")application.unlockendif%><html><head><title>messagepage</title></head><bodybgcolor="#006699"text="#ffffff"link="#ff0000"><formmethod="post"action="message.asp"><fontsize=2>输入你的话语,点击发送!</font><br><tableborder=0cellspacing=0><tr><td><inputname="message"type="text"size=30></td><td><spanstyle="position:absolute;left:241;top:48;z-index:-1"><inputtype="image"src="file:///d:/zhu/images/tb1.jpg"width=44height=24border=0></span><spanstyle="z-index:-1"><b><fontcolor="#800080">发送</font></b></span></td><tdvalign=top><ahref="logoff.asp"target="_top">

<spanstyle="position:absolute;left:294;top:46;z-index:-1"><imgsrc="file:///d:/zhu/images/tb1.jpg"width=46height=27border=0></span></a><spanstyle="z-index:-1">

<b><fontcolor="#800080">离开</font></b></span></td></table></form></body></html>

’logoff.asp(用户离开时的文件)<%'读取离开者的昵称

nickname=request.cookies("nick")nickname_entry=nickname&"#"response.cookies("nick")=""application.lockapplication("txt10")=application("txt9")application("txt9")=application("txt8")application("txt8")=application("txt7")application("txt7")=application("txt6")application("txt6")=application("txt5")application("txt5")=application("txt4")application("txt4")=application("txt3")application("txt3")=application("txt2")application("txt2")=application("txt1")application("txt1")="<fontcolor=""#00c800"">**"&nickname&"恋恋不舍地离开了聊天室!**</font>"application.unlock%><html><head></head><body>'使用JavaScript的close()方法来关闭聊天室窗口

<scriptlanguage="javascript">{close();}</script>

</body></html>default.asp执行的结果如图8-8所示。图8-8聊天室界面

作业:p154:3、4</html>default.asp执行的结果如图8-8所示。第三讲

教学目标:掌握数据库访问的方法

教学内容:数据库连接方法,访问数据库,在客户端访问数据库

教学重点与难点:数据库的连接及访问方法

教学方法与手段:举例法,采用投阴影教学

教学时数:2学时

教学过程:8.4建立与数据库的连接

我们先用Access建立数据库名为zhudb,表名为zhutb。表的结构与表中内容分别如图8-9、8-10所示。如何将数据库mydb1与ASP文件连接起来呢?下面我们来建立它们之间的联系。

ODBC是一种访问数据库的方法,只要系统中有相应的ODBC驱动程序,任何程序就可以通过ODBC操作驱动程序的数据库。比如系统中有Access的ODBC驱动程序,那么即使没有Access软件,也可以在程序(如用VB编的)中间对一个Access的MDB数据库进行加、删、改记录。只要写出SQL语句,ODBC驱动程序就会帮助做一切事情。图8-9表zhutb的结构图8-10表zhutb的内容

如何将数据库mydb1与ASP文件连接起来呢?下面我们来建立它们之间的联系。

ODBC是一种访问数据库的方法,只要系统中有相应的ODBC驱动程序,任何程序就可以通过ODBC操作驱动程序的数据库。比如系统中有Access的ODBC驱动程序,那么即使没有Access软件,也可以在程序(如用VB编的)中间对一个Access的MDB数据库进行加、删、改记录。只要写出SQL语句,ODBC驱动程序就会帮助做一切事情。用ODBC时,经常见到DSN。它是什么意思,有什么作用?DSN(DataSourceName)即数据源名称。在给ODBC驱动程序传SQL指令时,就是用DSN来告诉它到底操作的是哪一个数据库。如果数据库的平台变了,比如改用Access的数据库,只要其中表的结构没变,就不用改写程序,只要重新在系统中配置DSN就行了。

由此可见,DSN是应用程序和数据库之间的“桥梁”,要通过ODBC访问数据库的前提就是必须配置好DSN。一个DSN必须包含如下一些信息:

DSN的名字:就是给这座“桥”取个名字。当程序访问数据库时,给系统传的就是这个名字,而不是数据库的名字。

ODBC驱动程序类型:只有指出驱动程序类型,在操作数据库时,系统才会知道调哪个ODBC驱动程序来服务。数据库:必须指定这座“桥”到底连接的是哪个数据库,但不同的数据库系统,指定数据库名字的方法有些不同。

这座“桥”是架在系统之中的,所以WIN98/NT/2000提供了一个工具,即控制面板中的32位ODBC,共有三类,即用户DSN、系统DSN、文件DSN。一般要用系统DSN,因为这样可以让所有在该系统上操作的人都能使用这个DSN。下面我们来搭建这个“桥梁”。(1)[开始]→[设置]→[控制面板],打开“控制面板”窗口,如图8-11所示。(2)双击“ODBC数据源(32位)”,将弹出“ODBC数据源管理器”对话框,如图8-12所示,选择“系统DSN”标签。(3)在图8-12中单击[添加]按钮,将弹出“创建新数据源”对话框,如图8-13所示。选择“MicrosoftAccessDrive”,并单击[完成],接着出现“ODBCMicrosoftAccess安装”对话框,如图8-14所示。图8-11“控制面板”窗口图8-12“ODBC数据源管理器”对话框图8-13“创建新数据源”对话框图8-14“ODBCMicrosoftAccess安装”对话框

(4)在图8-14中的“数据源名”栏中输入指定的DSN名称如“sj”,然后单击“数据库”栏中“数据库:”下的[选取]按钮将打开“选定数据库”窗口,如图8-15所示。(5)在图8-15中先在目录下选择数据库存放的路径,再选择要使用的数据库,例如,选择"g:\dzsw\zhudb.mdb",然后单击[确定]按钮就可以了。这样,我们就可以使用"sj"来访问数据库"g:\dzsw\zhudb.mdb",而不用直接使用文件名"g:\dzsw\zhudb.mdb",这样做的好处是,一旦改变了文件名或者存放地,不必一个一个修改程序中所有该数据库的名称,只需修改DSN中的配置就可以了。通过以上步骤,我们就可以在ASP程序中利用DSN与数据表zhutb建立联系了。图8-15“选定数据库”对话框8.5访问数据库中的数据

8.5.1使用Recordset对象处理结果对于检索数据、检查结果、更改数据库,ADO提供了Recordset对象。Recordset对象保持查询返回的记录的位置,允许一次逐步扫描结果。

例8-9.asp,查询并显示数据库中的数据。

<%Setcn=Server.CreateObject("ADODB.Connection")Cn.Open"DSN=sj;"Setrs=Server.CreateObject("ADODB.Recordset")StrSQL="Select*fromzhutb"rs.OpenstrSQL,cn%>姓名:<%=rs("姓名")%><p>工资:<%=rs("工资")%><p>年龄:<%=rs("年龄")%><%rs.Closesetrs=nothing%>8-9.asp执行的结果如图8-16所示。图8-16显示数据库中的数据

从图8-16可以看出我们前面建立的数据库zhudb中的zhutb表中的数据被显示出来了。上面的例子只能显示数据库中一行的一些数据,若要显示数据库的所有行的数据,请看下例。例8-10.asp,显示数据库中所有的数据。

<%Setrs=Server.CreateObject("ADODB.Recordset")rs.Open"Select*fromzhutb","DSN=sj;"%><%whilenotrs.EOF%>

姓名:<%=rs("姓名")%><p>

工资:<%=rs("工资")%><p>年龄:<%=rs("年龄")%><p><%rs.moveNextwend%><%rs.Closesetrs=nothing%>8-10.asp执行的结果如图8-17所示。图8-17显示数据库中的所有数据

8.5.2使用Connection对象

ADO提供的Connection对象,用于建立和管理应用程序与ODBC数据库之间的连接。Connection对象具有各种属性和方法,可以使用它们打开和关闭数据库的连接,并发出查询请求来更新信息。下面使用Connection对象的Excute方法发出SQLINSERT命令向数据库中的表发出查询,并将数据插入到指定的数据表中。

1.向数据库插入数据例:8-11.asp,将新的数据插入到数据库中的表中。

<%Setcn=Server.CreateObject("ADODB.Connection")cn.Open"DSN=sj;"strSQL=“insertintozhutb(姓名,年龄,地址,工资)values(’zsq’,’30’,’changsha’,’3450’)"cn.Execute(strSQL)%><%cn.Closesetcn=nothing%>

在浏览器中执行8-11.asp文件,在状态栏中出现“完成”,但窗口中却无内容,这时,可打开Access中的数据库zhudb,从zhutb表中则可看出8-11.asp文件中列出的数据已插入表中,而且执行一次就插入一次相同的记录。如图8-18所示,表中是执行两次的结果。图8-18向数据库中插入记录

2.更新数据库中的数据除了SQLINSERT命令向数据库插入数据外,还可以使用SQLUPDATE和SQLDELETE命令更改和删除数据库信息。用SQLUPDATE命令,可以改变数据库表中字段的值。例8-12.asp,更新数据库中的数据,使用UPDATE命令将zhutb表的“姓名”字段中包含‘zsq’记录的“姓名”字段更改为“朱顺权”。

<%Setcn=Server.CreateObject("ADODB.Connection")cn.Open"DSN=sj;"cn.Execute"updatezhutbset姓名=’朱顺权’where姓名=’zsq’"%><%cn.Closesetcn=nothing%>

在浏览器中执行8-12.asp文件,在状态栏中出现“完成”,窗口中却无内容。这时,可打开Access中的数据库zhudb,从zhutb表中可看出“姓名”字段下的“zsq”已改写为“朱顺权”,如图8-19所示。

3.删除数据库中的数据要想从数据库表中删除特定的记录,可使用SQLDELETE命令。图8-19更改数据库中的记录

例:8-13.asp,删除数据库中的数据,使用DELETE命令将zhutb表的“姓名”字段中包含“朱顺权”的行删除。

<%Setcn=Server.CreateObject("ADODB.Connection")cn.Open"DSN=sj;"cn.Execute"deletefromzhutbwhere姓名=’朱顺权’"%><%cn.Closesetcn=nothing%>

在浏览器中执行8-13.asp文件,待状态栏中出现“完成”后,打开Access中的数据库zhudb,从zhutb表中看出“姓名”字段包含“朱顺权”的行已删除,如图8-20所示。

4.同时使用Connection对象和Recordset对象如上所述,单独使用Connection对象时不能在浏览器中看到执行的结果,若同时使用Recordset对象,利用Recordset对象的方法和属性便可解决这个问题。例8-14.asp,在一个文件中使用Connection对象更改数据库中的数据,使用Recordset对象返回数据库中的信息。

<%Setcn=Server.CreateObject("ADODB.Connection")图8-20删除数据库中的记录cn.Open"DSN=sj;"cn.Execute"updatezhutbset姓名=’朱顺权’,年龄=36,工资=2700where姓名=’朱泉水’"Setrs=Server.CreateObject("ADODB.Recordset")StrSQL="Select*fromzhutb"rs.OpenstrSQL,cnsetxm=rs("姓名")setnl=rs("年龄")setgz=rs("工资")%>zhutb表<br>姓名年龄工资<br><%DoUntilrs.EOFResponse.writexm&""&nl&""&gz&"<br>"Rs.movenextLoop%><%cn.Closesetcn=nothingsetrs=nothing%>

在浏览器中执行8-14.asp文件,可以看出zhutb表中数据更改的结果,如图8-21所示。注意,同时使用Connection对象和Recordset对象时,其打开方式中的连接数据库方法有点变化,只须写上cn即可,表示使用Connection对象打开的连接通道,如本例中的的语句:rs.OpenstrSQL,cn。

5.共享同一个Connection对象通道

Connection对象最重要的特色之一就是可供多个Recordset对象或工作共享同一个Connection对象的通道,看下面的例子。图8-21同时使用Connection对象和Recordset对象的结果。

例8-15.asp,在一个文件中使用Connection对象建立连接通道,多次使用Recordset对象返回数据库中的信息,并将信息使用表格显示出来。

<%subt(rs)’定义过程,并以表输出

Response.write("<tableborder=1>") Fori=0tors.fields.count-1 Response.write("<td>"+rs(i).name+"</td>") Next Whilenotrs.EOFResponse.Write("<tr>")Fori=0tors.fields.count-1V=rs(i)Ifisnull(v)thenv="" Response.write("<tdvalign=top>"+Cstr(v)+"</td>")NextRs.movenextWendResponse.write("</table>")Endsub%><%setcn=Server.CreateObject("ADODB.Connection")cn.Open"DSN=sj;"%><h3>zhutb表姓名,年龄和工资<br></h3><%setrs1=server.createobject("ADODB.Recordset")strSQL="SELECT姓名,年龄,工资FROMZHUTB"rs1.OpenstrSQL,cnt(rs1)%><h3>zhutb表姓名,年龄和地址<br></h3><%setrs2=server.createobject("ADODB.Recordset")strSQL="SELECT姓名,年龄,地址FROMZHUTB"rs2.OpenstrSQL,cnt(rs2)%><%cn.Closesetcn=nothingsetrs=nothing%>

在浏览器中执行8-15.asp文件,可以看到查询zhutb表中的结果,如图8-22所示。图8-22利用Connection通道使用Recordset对象进行多次查询的结果注意,本例的程序分为三部分,第一部分建立了过程t(rs),并以表格输出该Recordset对象内的所有字段数据。图8-22利用Connection通道使用Recordset对象进行多次查询的结果

第二部分创建Connection对象并实例化,打开连接对象;第三部分创建Recorset对象,并实例化Recordset对象rs1和rs2,进行查询,然后调用过程t(rs)表格输出查询结果。Rs.fields.count表示Recordset对象查询的总字段数目,rs(i).name可输出Recordset对象查询的第i个字段的名称,利用这两个命令不用知道数据库表中的结构,即可对数据库进行查询。其中的isnull函数是用来判定变量v是否为NULL值。第四讲

教学目标:掌握ASP与ADO对象的综合运用方法

教学内容:客户端访问数据库方法;用Command对象改善查询;ASP与ADO对象的综合应用教学重点与难点:Command对象的属性与方法的使用;ADO对象的综合运用方法

教学方法与手段:举例法,采用多媒体教学

教学时数:2学时

教学过程:8.6在客户端访问数据库8.6.1在客户端向数据库添加数据前面我们对数据库进行访问时,都需要在程序文件中进行输入、显示查询结果的编写工作,能不能在客户端的页面上直接向数据库添加数据或者操作呢?回答是肯定的。例8-16.asp,先建立一个输入页面(如图8-23)。

<html><body><formmethod="POST"action="8-17.asp"><p>姓名:<inputtype="text"name="xm"size="2"></p><p>年龄:<inputtype="text"name="nl"size="6"value="20"></p><p>工资:<inputtype="text"name="gz"size="12"value="2000"></p><p><inputtype="submit"value="提交"name="B1"><inputtype="reset"value="重置"name="B2"></p></form></body></html>图8-23输入页面

例8-17.asp,编写向数据库插入从页面接收到的数据文件。

<%sz=“’"&Request.Form("xm")&"’,’"&Request.Form("nl")&"’,’"&

Request.Form("gz")&"’,’"setobj=server.createobject("ADODB.Connection")obj.Open“gz"into_tb="insertintogz(姓名,年龄,工资)values("&sz&")"obj.Execute(into_tb)into_tb="insertintogz(姓名,年龄,工资,地址)values("&sz&")"obj.Execute(into_tb)obj.CloseSetobj=Nothing%>

填写好如图8-23的数据,按[提交]按钮后,将直接执行

8-17.asp文件,当看到状态栏中出现“完成”后,这时再打开表gz,便可看到页面上填写的数据已经填入表gz中,如图8-24所示。图8-24被加入数据的表小结处理步骤:1、建立表单页面,用于用户填写数据;2、建立处理表单数据的ASP文件;(1)通过Request.form获取post方法提交的数据;(2)通过Server.CreateObject方法建立数据源连接对象并连接数据库;(3)使用Sql查询语句添加数据记录。(4)关闭数据源连接对象(5)释放内存

8.6.2在客户端输入查询条件并显示查询结果。通常,客户在Web页上输入查询条件,ASP程序访问数据库服务器检索查询的信息,并将查询结果返回用户浏览器上。基本思路:首先将查询的所有核心过程写成一个名为query的过程,然后利用ASP的服务器端包容功能调用该过程。例8-18.asp,建立query过程。

<%subquery(inputquery)setcn=server.createobject("adodb.connection")cn.open"DSN=gz;"setrstemp=cn.execute(inputquery)howmanyfields=rstemp.fields.count-1’统计数据库中的列数%><tableborder=1><tr><%fori=0tohowmanyfields%><td><b><%=rstemp(i).name%></b></td><%next%><tr><%dowhilenotrstemp.eof%><tr><%fori=0tohowmanyfieldsthisvalue=rstemp(i)ifisnull(thisvalue)thenthisvalue=""endif%><tdvalign=top><%=thisvalue%></td><%next%></tr><%rstemp.movenextloop%></table><%rstemp.closesetrstemp=nothingcn.closesetcn=nothingendsub%>

以上是过程q的定义。在下面几个ASP程序中,只要加入想要使用的SQL查询语句,并调用该过程就可以非常方便地得到查询结果。

注意,rstemp.fields.count为要查询的字段的个数;rstemp(i).name为要查询的字段名称;rstemp(i)为相应字段的值。例8-19.asp,按地址进行查询。

<html><body><formmethod="post"action="8-19.asp"><p>地址:<inputname="name"></p><p><inputtype="submit"value="查询"name="b1"><inputtype="reset"value="复原"name="b2"></p></form>按地址查询的结果<%sql="select*fromzhutbwhere地址=’"&Request("name")&"’"callq(sql)%><!--#includefile="8-18.asp"--></body></html>

在图8-25中所示的页面中输入地址“长沙南区”,按[查询]按钮后,即可看到查询的结果,如图8-25下方表格所示。注意:该程序分三部分,第一部分建立输入页面;第二部分为SQL查询语句;第三部分包含q.inc文件的语句。该例显示数据表zhutb中地址为长沙的所有记录。在’"&Request("name")&"’的外面包围了三种符号,最里面是"&&",然后是""双引号,最外面是’’单引号。

例8-20.asp,按姓名进行模糊查询。

<html><body><formmethod="post"action="8-20.asp"><p>姓名:<inputname="name"value="abc"></p><p><inputtype="submit"value="查询"name="b1"><inputtype="reset"value="复原"name="b2"></p></form>按姓名查询的结果<%sql="select*fromzhutbwhere姓名like’"&Request("name")&"%%’"callq(sql)%><!--#includefile="8-18.asp"--></body></html>

程序8-20.asp运行的结果如图8-26所示。注意,在like后面的字符表达式中可包含“%”通配符号,“%”代表一个或者一串任意字符。例8-21.asp,按年龄和地址进行组合查询。

<html>图8-26输入姓名或姓即可显示查询结果的页面<body><formmethod="post"action="8-21.asp"><p>年龄:<inputname="nl"value="20"></p><p>地址:<inputname="dz"value=""></p><p><inputtype="submit"value="查询"name="b1"><inputtype="reset"value="复原"name="b2"></p></form>按年龄和地址查询的结果<%sql="select*fromzhutbwhere年龄=’"&Request("nl")&"’and地址=’"&Request("dz")&"’"callq(sql)%><!--#includefile="8-18.asp"--></body></html>

在图8-24所示的页面中输入要查询人的年龄和地址,如36和“长沙西区”,程序8-22.asp运行的结果如图8-27所示。图8-27输入年龄和地址进行组合查询的页面ADO的Recordset对象用来记录数据库所取得的数据库的对象,Connection对象提供客户端应用程序与数据库的联络通道,而Command对象所担任的是整个应用程序系统的“信息传递”角色,对数据库提出数据

温馨提示

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

评论

0/150

提交评论