第6章Web数据库程序设计1Web数据库访问技术2ODBC接口3数据库语言SQL4使用ADO访问数据库5用Connection对象连接数据库6用Command对象执行数据库操作7用RecordSet对象控制数据8程序设计举例——网站会员登录与数据修改本章小结数据库应用系统在现有计算机软件中占有很大的比例本章将着重介绍一种有效的Web数据库访问方案,即利用ASP服务器端的组件ActiveXDataObjects(ADO)实现对数据库的操作6.1Web数据库访问技术6.1.1概述Web数据库系统不能仅依赖某个DBMS来实现整个应用系统,它是通过其他Web应用程序,用标准的HTML语言及其某些特定的扩展功能开发的、以特殊形式访问数据库的应用程序系统Web应用系统一般采用Browser/WebServer/ApplicationServer模式实现Web访问数据库的关键是与数据库服务器间的接口返回6.1.2CGICGI(CommonGatewayInterface,公关网关接口)是一种接口标准,它使静态的Web页变为交互式的媒体成为可能图6-1通过CGI访问Web数据库模型返回6.1.3ODBCODBC(OpenDatabaseConnectivity,开放式数据库连接)是一个数据库编程接口,由微软公司建议并开发图6-2ODBC应用系统模型返回6.1.4JDBCJDBC是较早的Web开发平台,在Web应用中,嵌于网页(HTML文件)中的Javaapplets利用JDBC来访问数据库图6-3采用JDBC技术实现Web数据库访问模型返回6.1.5ADOADO(ActiveXDataObjects)是微软公司Web服务器端的内置组件,ADO允许程序员在编写程序时,通过一个OLEDB(数据库对象链接嵌入技术)提供者,如MicrosoftSQLServer,MicrosoftAccess系统等,访问并操纵数据库服务器中的数据图6-4采用ADO技术实现Web数据库访问模型返回6.2ODBC接口6.2.1ODBC接口概述ODBC是微软公司建议并开发的数据库API标准,ODBC为异种数据库提供了统一的访问接口,它使应用程序能用结构化的查询语言SQL访问数据库,从而对操作数据库的应用程序屏蔽了不同数据库管理系统的访问差异,也使数据库系统的开发不仅仅局限于某个DBMS返回ODBC主要定义如下5方面的内容:1.ODBC函数库,它为应用程序提供连接DBMS、执行SQL语句、提取访问结果的程序接口2.SQL语法,它遵循X/OpenandSQLAccessGroupCallLevelInterfaceSpecification标准3.错误代码4.连接、登录DBMS5.数据类型返回6.2.2ODBC的应用一个ODBC应用的建立应涵盖以下主要内容:1.建立需要操作数据库的应用程序,该程序通过调用ODBC函数提交SQL语句2.提供运行环境,该环境应包含数据库驱动程序,它负责处理ODBC函数调用,向数据源提交SQL请求,向应用程序返回结果,必要时将SQL语法翻译成符合DBMS语法规定的格式3.具有由用户数据库、DBMS等构成的可供应用程序访问的数据源返回通过ODBC访问数据库的基本步骤如下:创立并配置数据源;建立一个与数据源的对话连接;向数据源发出SQL请求;定义一个缓冲区和数据格式用于存储访问结果;提取结果;处理各种错误;向用户报告结果;关闭与数据源的连接返回6.2.3创建并配置数据源用户可通过如下两种方式创建或配置数据源:ODBC数据源管理程序或系统函数调用配置一个Access数据源的过程如下:在Windows系统下进入控制面板,打开ODBC数据源,若是Windows2000平台,则打开管理程序下的数据源ODBC,屏幕上将出现如图6-5所示的“ODBC数据源管理器”对话框图6-5“ODBC数据源管理器”对话框返回选择所使用的数据库驱动程序,如选择MicrosoftAccessDriver(*.mdb),单击“完成”按钮,出现如图6-7所示的对话框图6-7“ODBCMicrosoftAccess安装”对话框返回选择“系统DSN”标签,即选择“系统数据源”。要使系统上的所有应用程序都可以使用它,必须选用系统DSN,这是建立Web站点的需要。单击“添加”按钮,进入“创建新数据源”对话框,如图6-6所示图6-6“创建新数据源”对话框返回在“数据源名”输入框中键入数据源名,单击“选择”按钮为该数据源指定一个已创建好的Access数据库(*.mdb),该数据库应该是在Web应用程序中即将访问的数据库。单击“确定”按钮,回到图6-6“创建新数据源”对话框。单击“确定”按钮直到关闭ODBC数据管理器,此时完成一个数据源的建立过程。若要修改该数据源的配置,可在图6-5“ODBC数据源管理器”对话框中选定要更改的数据源,再单击“配置”按钮返回6.3数据库语言SQL6.3.1SQL概述SQL(StructuredQueryLanguage,结构化查询语言)是一个被广泛采用、适用于关系数据库访问的数据库语言工业标准。它包括数据定义、数据操纵、数据查询和数据控制等语句标准。SQL具有以下4部分功能:数据定义用于定义数据模式。数据查询用于从数据库中检索数据。数据操纵用于对数据库数据进行增加、删除、修改等操作。数据控制用于控制数据库用户的访问权限返回6.3.2主要的SQL语句1.查询语句SELECTSELECT是SQL的核心语句,它功能强大,和各类SQL子句结合可完成多种复杂的查询操作。其语法格式如下:SELECT[ALL|DISTINCT]fields_list[INTO]new_tablenameFROMtable_names[WHERE…][GROUPBY…][HAVING…][ORDERBY…]返回2.插入数据语句INSERTINSERT可添加一个或多个记录到一个表中。INSERT有两种语法形式:①INSERTINTOtarget[INexternaldatabase](fields_list){DEFAULTVALUES|VALUES(DEFAULT|expression_list)①INSERTINTOtarget[INexternaldatabase]fields_list{SELECT…|EXECUTE…}3.删除数据语句DELETEDELETE用于从一个或多个表中删除记录。其语法格式如下:DELETEFROMtable_names[WHERE…]返回4.更新数据语句UPDATEUPDATE语句用于更新表中的记录。其语法格式如下:UPDATEtable_nameSETField_1=expression_1[,Field_2=expression_2,…][FROMtable1_name|view1_name[,table2_name|view2_name,…]][WHERE…]返回6.4使用ADO访问数据库6.4.1概述ADO(ActiveXDataObjects,ActiveX数据对象)技术是一种良好的Web数据库访问解决方案ADO是一个ASP内置的服务器组件,它是一座连接Web应用程序和OLEDB的桥梁ADO几乎兼容所有的数据库系统ADO支持多种程序设计语言返回6.4.2ADO的对象类和对象模型ADO技术是通过ADO对象的属性、方法来完成相应的数据库访问的。ADO共有以下7种独立对象类I.Connection——连接对象,表示与数据源的连接关系II.Command——命令对象,用于定义一些特定的命令语法,以执行相应的动作III.RecordSet——记录集对象,用于表示来自数据库表或命令执行结果的记录IV.Property——属性对象,用于描述对象的属性,每个ADO对象都有一组惟一的属性来描述或控制对象的行为返回Error——错误对象,用于描述Connection对象在连接数据库时发生的错误Field——域(字段)对象,用来表示RecordSet对象的字段,一个记录行包含一个或多个域(字段)Parameter——参数对象,用来描述Command对象的命令参数,是命令所需要的变量部分图6-8ADO对象模型返回6.4.3ADO样例【例6-10】以下是一个视频网站中某个页面的源代码(ch6-10.asp),它完成在页面上列出数据库表中所有电影的名称、影片级别及主要演员的功能。存放这些电影信息的数据库表名为films点击查看程序返回6.5用Connection对象连接数据库6.5.1Connection对象的常用属性和方法Connection对象的常用属性:Mode用于设置数据的可用权限,其属性值是系统定义的一些常量,只能在关闭Connection对象时设置。State指明Connection对象的当前状态,包括关闭、打开、正在连接、正在执行命令等。ConnectionTimeout设置对象建立连接操作失败时的等待时间。DefaultDatabase设置连接数据源的默认数据库。ConnectionString设置连接数据源的一些信息返回Connection对象的常用方法:Open用于建立到数据源的物理连接。Execute用于执行指定的查询、SQL语句、存储过程或特定的文本。Cancel用于取消用异步方式执行的Execute或Open方法的调用。Close用于关闭一个连接。在对Connection对象操作结束时,使用Close方法释放所有与之关联的系统资源返回6.5.2打开和关闭数据库连接1.打开Connection对象打开Connection对象的Open方法的语法格式如下:Open(ConnectionString,[UserID,]Password[,Options])2.关闭Connection对象关闭Connection对象的Close方法的语法格式如下:对象实例名.Close【例6-11】以下是一段使用连接对象的代码,可以反映连接对象应用的基本步骤查看程序返回6.5.3通过Connection对象执行SQL语句打开Connection对象后,可以通过对象的Execute方法实现SQL语句的执行过程。Execute方法的语法格式如下:Execute(CommandText,RecordsAffected,Option)【例6-12】下列代码从数据库表sales中检索出所有记录并返回记录数。点击查看程序返回6.5.4Connection对象的事务处理【例6-14】本例是进行事务处理的一段代码%SetConn=Server.CreateObject(ADODB.Connection)Conn.OpenMyDataConn.BeginTrans'事务开始'在CreditCard表中记录交易的信用卡号Conn.ExecuteINSERTINTOCreditCard(CreNo)VALUES('5555-446780190')'在Shipping表中使被购买商品的次数增1Conn.ExecuteUPDATEShippingSETSalesCount=SalesCount+1WHEREID='100020'Conn.CommitTrans'事务提交(结束)Conn.Close%返回6.6用Command对象执行数据库操作6.6.1Command对象的常用属性和方法执行SQL语句可以用打开的Connection对象,也可以用ADO的Command(命令)对象达到同样的目的。Command对象的常用属性和方法如下:ActiveConnection属性指定与Command对象关联的已打开的连接对象。Name属性指定Command对象的名字。CommandText属性定义一个可执行的命令串。CommandType属性指定命令的类型。Execute方法执行命令返回6.6.2用Command对象执行SQL语句【例6-16】用Command对象的Exec