第6章Web数据库技术作者:魏善沛制作者:王凯第6章Web数据库技术6.1基本概念6.2交互页面的技术内涵6.3ActiveX数据对象6.4连接Web数据库6.5其他数据库连接6.6应用实例6.7小结6.1基本概念数据库技术研究的是如何科学地组织数据和存储数据,如何高效地检索数据和处理数据,以及如何既减少数据冗余,又能保障数据安全,实现数据共享。Web数据库即网络数据库,就是用户利用浏览器作为输入界面,输入必要的数据,浏览器将这些数据传送至网站,网站再对输入数据实施处理,并将其执行的结果返回给浏览器,通过浏览器将最终执行结果提交给用户。6.1基本概念客户机与服务器的交互示意图:图6.1用户输入的数据执行结果客户端Web服务器端数据库访问数据库6.2交互页面的技术内涵交互网页就是具有客户访问,服务器应答双向功能,含有数据库管理的网站系统。动态服务器页(ActiveServerPages,ASP)技术是其中之一,它是一种开放式的非编译应用环境,能够组合HTML、Script和可重用的ActiveX服务器组件来建立动态的,强大而基于Web的商业应用。6.2交互页面的技术内涵6.2.1概述6.2.2ASP对象模型6.2.3ASP脚本组件6.2.4ASP内置组件6.2.5ASP外置组件6.2.1概述Web数据库(WebDB)=因特网+数据库。基于Web数据库的企业网站,可以通过多种方案实施对数据库的管理,我们利用ASP技术只是其中的一种方法。6.2.1概述访问WebDB过程示意图:浏览器Web服务器(IIS/PWS)WebDB图6.2被启动的.asp文件ADO对象ODBC/OLEDB6.2.1概述Web数据库涉及的知识面比较宽,各类技术比较多,其中主要包括(基于Windows系统):超文本标识语言HTML脚本语言ScriptASP和ADO技术网络技术数据库技术6.2.1概述初学者掌握学习Web数据库的进阶过程:HTMLFrontPageIIS/PWSVS2005Web服务企业网站ASPADODBSOLEDBODBC参考资料/帮助文档图6.3Script6.2.2ASP对象模型在面向对象的编程中,对象指的是由作为完整实体的操作和数据组成的变量。组件是包含可更改数据形式的代码,并符合COM(ComponentObjectModel)协议规范的对象。在使用这种对象时,需创建对象实例并给它配置变名。如:SetObjFSO=Server.CreateObject(Scripting.FileSystemObject)ObjFSO是ASP程序创建的对文件、文件夹访问的对象实例。6.2.2ASP对象模型ASP3.0提供七个功能强大的内置对象:Request服务器从客户端取得信息Response服务器向客户端传送信息Application公共存储区,可以被不同的用户访问Session个人存储区,在当前状态下,只能被用户本人访问Server提供存取Web服务器的功能ObjectContext配合服务器进行分布式的事务处理ASPError返回ASP出错的详细信息6.2.2ASP对象模型ASP文件一般由HTML标识和VBScript或JavaScript程序代码构成。从本质上说ASP文件是一个纯文本文件,其扩展名是.asp。脚本语言是设计ASP的有力工具。这不仅由于脚本语言简单易用,更主要的是它可以非常融洽地嵌入到HTML和ASP页面之中,ASP默认的脚本语言是VBScript。6.2.2ASP对象模型典型的ASP文件含有四个部分:(1)标准HTML文件。(2)服务器端执行代码(包含在%与%之间)(3)客户端执行代码(处于SCRIPT与/SCRIPT之间的脚本语言和HTML标识及内容)。(4)包含文件语句#include。6.2.2ASP对象模型在ASP中指定脚本语言的方法一般有标准指定法和拓展对象法两种:⑴标准指定法用%@Language=ScriptLanguageRunat=Location%,一般放在程序的第一行。⑵拓展对象法用HTML的SCRIPT标识声明。如:SCRIPTLanguage=VBScriptRunat=Server注:VBScript等效于‘VBScript’等效于“VBScript”6.2.2ASP对象模型1.Request和Response对象基本应用2.Application和Session对象基本应用3.Server对象的基本应用1.Request和Response对象基本应用Request对象包含客户端向Web提出的所有请求信息。Request对象常用的集合、属性、方法有:Request.ClientCertificate——读取客户证书中数值的集合;Request.Form——用POST读取表单数据的集合;Request.QueryString——用GET读取表单数据的集合;Request.Cookies——读取Cookie文件的集合;Request.ServerVariables——读取服务器端环境变量与HTTP报头的集合。1.Request和Response对象基本应用Response对象用来取得创建和回送客户端浏览器的响应信息。Response对象常用的集合、属性、方法有:Response.Cookies——写入Cookie文件的集合;Response.Buffer——缓冲区处理属性;Response.Redirect——从当前网页导向至其他网页(重定向网址)的方法;Response.Clear/Response.Flush——缓冲区处理方法;Response.End——结束程序执行的方法;Response.Write——输出数据至浏览器端的方法。2.Application和Session对象基本应用ASP的Application对象可用来存储对于“正在运行此应用程序”的所有用户的状态。我们可以使用Application对象将应用程序的信息存于Web服务器。例如现有值Application(“data”),甲已将其设为123,乙再去读取该值Application(“data”)时,这个值仍是123,任何一个访问该网站的人都可以获取或重新设置该值。2.Application和Session对象基本应用Application对象的常用方法、事件有:Application.Lock/Application.Unlock——锁定或解除Application的方法;Application.OnStar/Application.OnEnd——初始化或释放变量的事件。2.Application和Session对象基本应用Session对象是用来存储浏览器端的数据,或称存储特定用户的信息。与Application对象不同的是,Application对象存储的是所有浏览器端共享的数据,而Session对象存储的是个别浏览器端专用的数据。例如甲访问某页,将这个值设置为A;乙来访问,将这个值设置为B,若下次甲再来访问这个网站取出Session(“MyDat”)这个值时,它仍是A(若Session未过期),而不是B或其他值。2.Application和Session对象基本应用Session对象的常用集合、方法、属性、事件有:Session.Contents——获取指定Session对象内容的集合;Session.Abandon——撤销当前Session对象的方法;Session.SessionID——返回用户会话识别码的属性;Session.Timeout——限制时间的属性(单位:分钟,缺省值:20);Session.OnStar/Session.OnEnd——初始化或释放变量的事件。2.Application和Session对象基本应用Application对象是为响应ASP页的首次请求而载入ASPDLL(ASPDynamicLinkLibrary)时创建的,它提供的存储空间用来存放变量和对象的引用,这一空间可用于所有页面,任何访问者都可打开它,它记录的是所有浏览器端共享的变量。Session对象是为每一位访问者从Web站点或Web应用程序中首次请求ASP页时创建的,它将保留到默认的期限结束或由脚本决定其终止期限,所记录的个别浏览器端专用的变量。2.Application和Session对象基本应用Application对象与Session对象的差异:Session对象1Session对象2Session对象n浏览器1浏览器2浏览器nApplication对象图6.4Application对象与Session对象比较3.Server对象的基本应用ASP专为处理服务器上的特定任务设计了Server对象,其特别适用于处理与服务器环境和活动有关的任务,它用“属性/方法”来提供Web服务器端的相关信息。这些“属性/方法”可以像应用函数一样供程序员适时调用。3.Server对象的基本应用Server对象的常用属性、方法有:(1)Server.ScriptTimeout——设置脚本执行时间的属性(单位:秒,缺省值:90);(2)Server.CreateObject——创建对象实例的方法;(3)Server.Execute——执行指定URL的方法;(4)Server.HTMLEncode——返回一个字符串,并转换为等价的名称代码的方法;(5)Server.MapPath——将指定虚拟路径转换成实际路径的方法;(6)Server.Transfer——执行控制权转移的方法;(7)Server.URLEncode——返回一个字符串,并转换为等价的URL数字代码的方法。6.2.3ASP脚本组件ASP提供了多个内置的服务器端组件(ServerSideComponent,SSC),通常简称为服务器组件。服务器组件实际上是运行在服务器端的一个动态链接库(DynamicLinkLibrary,DLL)。组件的使用通常要创建相应地对象实例,如使用ASPServer对象提供的CreateObject方法创建对象实例:%DimobjInstSetobjInst=Server.CreateObject(ADODB.Connection)%6.2.3ASP脚本组件ASP内置组件功能非常强大、内容很丰富。使用Microsoft的IIS和ASP,就已包含了ASP的数个已安装和可安装的内置组件。名称功能Dictionary用内建函数来完成大量数据的存储和处理等基本任务,提供一种存储值的有效方式FileAccess文件存取组件,提供读写服务器文件的功能。并可取得并修改储存在文件中的信息表6.1ASP的脚本组件6.2.4ASP内置组件ASP的内置组件也许多,在此我们也只能介绍部分ASP内置组件的应用。AdRotator组件提供广告随机轮换选择功能,简化了按顺序显示每幅广告的任务,可以轻松自如地添加新广告。浏览者打开网页时,能随机地看到广告。程序员可以很容易地增加或变更广告的超链接,使浏览者单击广告便可进入广告客户的Web站点。6.2.5ASP外置组件ASP的外置组件或称第三方组件,是使用VB、VC++、VFP等支持组件对象模型(COM)技术的语言编写的ASP组件。从Internet下载的组件是要注册的,注册以后就像使用ASP的内置组件一样方便,它们也有属性、方法等。6.3ActiveX数据对象Web数据库的核心在于使用ASP内置组件ActiveX数据对象(ActiveXDataObject,ADO),ADO是ASP的一个非常重要的组件,习惯上也称ADO组件。ADO的主要作用是提供用户访问数据存储的功能,它是从单个或多个数据源获取和修改数据的最普通的使用方法。这些数据源包括传统的数据库、文件系统、电子邮件仓库以及Internet上的数据。6.3ActiveX数据对象6.3.1概述6.3.2Connection对象6.3.3Command对象6.3.4Recordset对象6.3.1概述ADO组件模型中有三个主要对象,它们是Connecti