第十六章通过ASP访问数据库计算中心本章内容16.1ASP、HTML简介16.2通过ASP+ADO访问SQL数据库16.3典型安全问题简介16.1ASP、HTML简介Web访问的基本过程客户端向服务器请求HTML文件传送到客户端客户端Web服务器打开浏览器,输入网址,访问远端服务器的特定页面;服务器接受请求后找到该页面,并将它传送回浏览器,我们就可以浏览想看的内容了。通过IE浏览网页HTML:HypertextMarkupLanguage,超文本标记语言,用来制作网页,这种标记语言不需要编译,直接由浏览器执行。16.1ASP、HTML简介静态网页的基本结构HTML格式的网页通常被称为“静态网页”,一般以.htm或.html为后缀名。HTMLHEADTITLEMyHomepage/TITLE/HEADBODYfontcolor=redHelloworld!!/font/BODY/HTML16.1ASP、HTML简介html/html标记,用以向浏览器说明,包含在该标记中的内容要以网页的形式来显示。head/head标记,该标记间包含的内容是这个HTML文件的文件头,用以说明网页的标题,连接,关键字等信息。title/title标记,包含在这个标记中间的内容会显示为这个网页的标题,该标记是包含在head/head标记中的。body/body标记,包含在body/body标记中的内容会显示在浏览器的工作区,也就是浏览网页所看见的内容,包括文字,图片,表格,表单,多媒体等。提示:head…/head与body…/body标记是独立的部分,不能互相嵌套。16.1ASP、HTML简介查看网页源文件(HTML文件)打开网页后,选择浏览器菜单命令“查看|源文件”16.1ASP、HTML简介ASP简介ASP:ActiveServerPages,是服务器脚本编写环境。使用ASP可以组合HTML页、脚本命令和ActiveX组件以创建和运行动态、交互、功能强大的Web服务器应用程序。ASP可用来创建动态Web页。16.1ASP、HTML简介ASP不是一种语言,使用JScript或VBScript。ASP的工作原理:(1)用户在客户端浏览器地址栏中输入ASP动态网站的网址,即向服务器发出一个浏览网页的请求。(2)服务器接受请求后,查找要浏览的网页文件,执行.asp文件,将结果转化为一个标准的HTML文件发送给客户端。16.1ASP、HTML简介ASP文件格式ASP文件以.asp为扩展名,在ASP文件中,可以包含以下内容:–HTML标记–脚本命令:位于%和%分界符之间的命令–文本16.1ASP、HTML简介IIS安装及设置ASP作为一种服务器端脚本语言,不能直接通过IE访问,需要使用微软公司的IIS(InternetInformationServices)因特网信息服务,在本机或局域网上访问与调试ASP程序。16.1ASP、HTML简介(1)安装IIS:【控制面板】|【添加/删除程序】|【添加Windows组件】(需要Windows安装盘)16.1ASP、HTML简介(2)配置:【控制面板】|【管理工具】|【Internet信息服务】16.1ASP、HTML简介16.1ASP、HTML简介使用简单表单获取并响应用户请求表单的作用:实现与用户的交互。通过表单可让用户填写或选择某些信息,单击提交按钮将信息发送到服务器端,服务器端收到信息后进行处理,再通过某些方法返回信息给客户端。表单元素:是一些输入域,所有输入域表单元素须放在form/form容器中。Form元素属性:method、action、target输入域:单行文本框、滚动文本框、复选框、按钮、下列菜单等。16.1ASP、HTML简介在HTML中,表单一般有如下的结构:FORMACTION=“…”METHOD=“…”…INPUT……SELECT…/SELECT…TEXTAREA…/TEXTAREA…/FORM16.1ASP、HTML简介一个表单实例单选按钮下拉菜单滚动文本框按钮单行文本框16.2通过ASP+ADO访问SQL数据库ADO简介ADO,即ActiveDataObjects,是一种提供访问各种数据类型的连接机制,通过其内部的属性和方法提供统一的数据访问接口方法。ADO是一项容易使用并且可扩展的将数据库访问添加到Web页的技术。ASP、ADO和SQL的关系如果ASP网页要访问数据库,首先应在ASP网页中创建ADO对象,负责建立ASP网页与数据库间的连接关系;然后ADO对象通过SQL语句来操作数据库;如果执行SQL语句产生了返回数据,则ASP网页可以通过ADO对象来操作这些数据。16.2通过ASP+ADO访问SQL数据库ADO访问数据库流程操作数据打开连接连接数据库关闭连接16.2通过ASP+ADO访问SQL数据库ASP文件中数据库连接的主要参数要访问数据库,必须通过ADO对象中的connection对象建立一个到数据源的连接。Connection对象用来建立与数据库的连接使用前需要创建创建后调用该对象的open方法建立连接使用完需要关闭并释放掉connection对象16.2通过ASP+ADO访问SQL数据库使用ADO连接到SQLServer数据库使用connection对象连接SQLServer数据库的语法:%DimcnSetcn=Server.CreateObject(ADODB.Connection)cn.open连接字符串%信任模式连接字符串:Provider=sqloledb;DataSource=服务器;InitialCatalog=数据库名称;IntegratedSecurity=SSPI;安全模式连接字符串:Provider=sqloledb;DataSource=服务器;InitialCatalog=数据库名称;UserId=用户名;Password=密码;16.2通过ASP+ADO访问SQL数据库举例:通过信任模式与本地机器上的studentdb数据库建立连接。%'定义并创建一个connection对象cnDimcnSetcn=Server.CreateObject(ADODB.Connection)'通过open方法打开数据库连接cn.openProvider=sqloledb;DataSource=(local);InitialCatalog=studentdb;IntegratedSecurity=SSPI;response.write连接成功'关闭并释放不再使用的connection对象cncn.closesetcn=nothing%16.2通过ASP+ADO访问SQL数据库Connection对象的重要方法1.Open方法用来打开数据库连接2.Close方法用来关闭数据库连接3.Execute方法用来执行各种SQL命令,包括查询、添加、删除和修改全部操作。Setrecordset对象=connection对象.Execute(SQL字符串):SQL语句返回记录集时使用。connection对象.Execute(SQL字符串):SQL语句不返回记录集时使用。16.2通过ASP+ADO访问SQL数据库简单的ASP查询网页数据库的记录集要返回到客户端的浏览器上,需要通过RecordSet对象实现。RecordSet对象记录集,好比内存中的虚拟数据表,保存了满足查找条件的所有记录。一个数据库应用程序需要使用Connection对象建立与数据库的连接,并使用Recordset对象处理返回的数据。记录指针EOFBOF16.2通过ASP+ADO访问SQL数据库使用RecordSet对象创建RecordSet语法:%dimrssetrs=server.createobject(adodb.RecordSet)%创建后需要调用open方法打开%rs.openselect*from学生,cn%也可以利用connection对象直接执行查询%setrs=cn.execute(select*from学生)%16.2通过ASP+ADO访问SQL数据库读取RecordSet对象字段值的方法直接读取%response.writers(列名)%或%response.writers(列号)%通过fields对象的value属性读取%response.writers.fields(列名).value%或%response.writers.fields(列号).value%注:列号指每一列的编号,从0开始,即第一列编号为0,第二列编号为1,依此类推。表的列数可以通过fields对象的count属性得到。%i=rs.fields.count%16.2通过ASP+ADO访问SQL数据库例16-1:将本机“教学”数据库“学生表”的首行记录返回到页面上。%Dimcn,rsSetcn=Server.CreateObject(ADODB.Connection)cn.open“Provider=sqloledb;DataSource=(local);InitialCatalog=教学;IntegratedSecurity=SSPI;setrs=cn.execute(selecttop1*from学生表)response.writers(学号)&response.writers(姓名)&response.writers(性别)&response.writers(生日)cn.closesetrs=nothingsetcn=nothing%例16-1:将本机“教学”数据库“学生表”的首行记录返回到页面上(使用fields对象读取字段内容)。%Dimcn,rsSetcn=Server.CreateObject(ADODB.Connection)cn.open“Provider=sqloledb;DataSource=(local);InitialCatalog=教学;IntegratedSecurity=SSPI;setrs=cn.execute(selecttop1*from学生表)response.writers.fields(学号).value&response.writers.fields(姓名).value&response.writers.fields(性别).value&response.writers.fields(生日).valuecn.closesetrs=nothingsetcn=nothing%response.writers.fields(0).value&response.writers.fields(1).value&response.writers.fields(2).value&response.writers.fields(3).value16.2通过ASP+ADO访问SQL数据库例16-2:将本机“教学”数据库“学生表”的所有记录返回到页面上。问题:如何显示每一行记录?解决:VBScript循环语句DO…loop语法:dowhile条件表达式循环程序代码loop说明:当条件为真时,执行循环程序代码,否则,执行loop后的程序代码(即不进入循环体);通过RecordSet对象.movenext移动记录指针。常用条件表达式:RecordSet对象.eof——判断是否到最后一条记录之后(EndOfFile)。16.2通过ASP+ADO访问SQL数据库%Dimcn,rsSetcn=Server.CreateObject(ADODB.Connection)cn.openProvider=sqloledb;DataSource=(local);InitialCatalog=教学;Inte