ASP技术访问WEB数据库中图分类号:tp文献标识码:a文章编号:1007-0745(2009)02-00摘要:作者阐述了windows操作系统中iis(internet information server)内含的asp(active server page)和ado(activex data objects)技术的结构和特点,总结了采用asp 技术访问web数据库的步骤。
asp编写前台动态网页,它采用封装对象,程序调用对象的技术,简化编程,加强程序间合作,通过ado 访问后台web数据库。
关键词:asp技术 ado iis web数据库0 引言目前,internet网络技术正飞速发展。
每时每刻,成千上万的人们通过访问各种web数据库进行信息的快速交流和传递。
这一切都离不开强有力的动态网页制作工具asp及其ado对象。
为此,本文将对asp技术和ado对象作较全面的介绍,并通过一个实例来说明它是如何进行数据库的访问。
1 访问web数据库的多种方案目前在windows环境下有多种访问web数据库的技术,主要有:(1)公共网关接口cgi(common?gateway?interface)。
cgi是较早实现的技术。
适用于多种服务器平台,如unix、windows等,但cgi的开发成本高、维护困难、功能有限、不具备事务处理功能、占用服务器资源较多。
(2)internet数据库连接器idc(internet?database?connector)。
idc集成在isapi(internet?server?api)中,充分利用了dll技术,易扩充,但编程较cgi更为复杂,只适用于小型数据库系统。
(3)先进数据库连接器adc(advance?database?connector)。
adc 提供了activex?control来访问数据库,它的主要特点是数据查询由用户端浏览器执行,因而需将服务器端数据库中的部分记录下载到用户端,系统开销较大、响应慢,只适用于特别频繁的数据库查询操作。
(4)java/jdbc语言编程。
java语言是一种面向对象、易移植、多线程控制的语言,可通过jdbc去连接数据库。
用java/jdbc编写的软件可移植性强,适用于多种操作系统,但其执行效率和执行速度还不理想,目前无法建立高效、高速的应用。
(5)动态服务器页面asp(active?server?page)。
asp是微软公司最新推出的web应用开发技术,着重于处理动态网页和web数据库的开发,编程灵活、简洁,具有较高的性能,是目前访问web数据库的最佳选择。
2 asp简介2.1 asp访问数据库的原理asp是服务器端的脚本执行环境,可用来产生和执行动态的高性能的web服务器程序。
当用户使用浏览器请求asp主页时,web服务器响应,调用asp引擎来执行asp文件,并解释其中的脚本语言(jscript或vbscript),通过odbc连接数据库,由数据库访问组件ado(activex data objects)完成数据库操作,最后asp生成包含有数据查询结果的html主页返回用户端显示。
由于asp在服务器端运行,运行结果以html主页形式返回用户浏览器,因而asp源程序不会泄密,增加了系统的安全保密性。
此外,asp是面向对象的脚本环境,用户可自行增加activex组件来扩充其功能,拓展应用范围。
2.2 asp页面的结构asp的程序代码简单、通用,文件名由.asp结尾,asp文件通常由四部分构成:(1)标准的html标记:所有的html标记均可使用。
(2)asp语法命令:位于?标签内的asp代码。
(3)服务器端的include语句:可用#include语句调入其它asp代码,增强了编程的灵活性。
(4)脚本语言:asp自带jscript和vbscript两种脚本语言,增加了asp的编程功能,用户也可安装其它脚本语言,如perl、rexx等。
2.3 asp的运行环境目前asp可运行在三种环境下:(1)windows nt server 4.0运行iis 3.0(internet information server)以上。
(2)windows nt workstation4.0 运行peer web server 3.0以上。
(3)windows95/98运行pws(personal web server)。
其中以nt server上的iis功能最强,提供了对asp的全面支持,是创建高速、稳定的asp主页的最佳选择。
2.4 asp的内建对象asp提供了六个内建对象,供用户直接调用:(1)application对象:负责管理所有会话信息,可用来在指定的应用程序的所有用户之间共享信息。
(2)session对象:存贮特定用户的会话信息,只被该用户访问,当用户在不同web页面跳转时,session中的变量在用户整个会话过程中一直保存。
session对象需cookie支持。
(3)request对象:从用户端取得信息传递给服务器,是asp读取用户输入的主要方法。
(4)response对象:服务器将输出内容发送到用户端。
(5)server对象:提供对服务器有关方法和属性的访问。
(6)object context对象:iis 4.0新增的对象,用来进行事务处理。
此项功能需得到mts(microsoft transcation server)管理的支持。
2.5asp的主要内置组件(1)ad rotator组件:用来按指定计划在同一页上自动轮换显示广告,用于www上日益重要的广告服务。
(2)browser capabilities组件:确定访问web站点的用户浏览器的功能数据,包括类型、性能、版本等。
(3)database access组件:提供ado (activex data objects)来访问支持odbc的数据库。
(4)file access组件:提供对服务器端文件的读写功能。
(5)content linking组件:生成web页内容列表,并将各页顺序连接,用于制作导航条。
此外,还可安装myinfo、counters、content rotator、page count等组件,用户也可自行编制actiive 组件,以提高系统的实用性。
2.6 database access组件adowww上很重要的应用是访问web数据库,用asp访问web数据库时,必须使用ado组件,ado是asp内置的activex服务器组件(activex server component),通过在web服务器上设置odbc和oledb可连接多种数据库:如sybase、oracle、informix、sql?server、access、vfp等,是对目前微软所支持的数据库进行操作的最有效和最简单直接的方法。
ado组件主要提供了以下七个对象和四个集合来访问数据库。
(1)connection对象:建立与后台数据库的连接。
(2)command对象:执行sql指令,访问数据库。
(3)parameters对象和parameters 集合:为command对象提供数据和参数。
(4) recordset对象:存放访问数据库后的数据信息,是最经常使用的对象。
(5)field对象和field集合:提供对recordset中当前记录的各个字段进行访问的功能。
(6)property对象和properties集合:提供有关信息,供connection、command、recordset、field对象使用。
(7)error 对象和errors集合:提供访问数据库时的错误信息。
3 asp访问数据库步骤在asp中,使用ado组件访问后台数据库,可通过以下步骤进行:3.1 定义数据源在web服务器上打开“控制面板”,选中“odbc”,在“系统dsn”下选“添加”,选定你希望的数据库种类、名称、位置等。
本文定义“sql?server”,数据源为“cj”,数据库名称为“stu”,脚本语言采用jscript。
3.2 使用ado组件查询web数据库(1)调用server.createobject方法取得“adodb.connection”的实例,再使用open方法打开数据库:conn=server.createobject(“adodb.connection”)conn.open(“cj”)(2)指定要执行的sql命令连接数据库后,可对数据库操作,如查询,修改,删除等,这些都是通过sql指令来完成的,如要在数据表stutab中查询代码中含有“x”的记录sqlstr=“select*from stutab where code?like “%x%’”rs=conn.execute(sqlstr)(3)使用recordset属性和方法,并显示结果为了更精确地跟踪数据,要用recordset组件创建包含数据的游标,游标就是储存在内存中的数据。
rs=server.createobject(“adodb.recordset”)rs.open(sqlstr,conn,1,a)注:a=1读取a=3新增、修改、删除在recordset组件中,常用的属性和方法有:rs.fields.count:recordset对象的字段数。
rs(i).name:第i个字段的名称,i为0至rs.fields.count-1 rs(i):第i个字段的数据,i为0至rs.fields.count-1rs(“字段名”):指定字段的数据。
rs.record.count:游标中的数据记录总数。
rs.eof:是否最后一条记录。
rs.movefirst:指向第一条记录。
rs.movelast:指向最后一条记录。
rs.moveprev:指向上一条记录。
rs.movenext:指向下一条记录。
rs.getrows:将数据放入数组中。
rs.properties.count:ado的resultset或connection的属性个数。
rs.properties(item).name:ado的resultset或connection的名称。
rs.properties:ado的resultset或connection的值。
rs.close():关闭连接。
(4)关闭数据库conn.close()4 查询web数据库举例我们以服务器名称为“srver1”的microsoft的 sql7.0数据库为例,web服务器为iis4.0,访问的数据库名为“stu”,使用的存储过程为“bj1”,访问的字段为“姓名”、性别”和“班级名称”等,当用户使用浏览器查询时,将查询结果显示给客户端。
程序如下:<html><head><title>访问数据库演示</title></head><body><% set cm1=server.creatobject(“mand”)cm1.activeconnection=“drive={sqlserver};server=server1;uid=sa;pwd=;database= stu”’建立连接的对象,说明对象使用的连接字符串mandtext=”bj1”mandtype=adcmdstoredprocset p1=cm.createparameter(“in”,advarchar,adparaminput,10,“法学9903”)cm1.parameters.append p1set rs1=cm.execute’说明使用的存储过程及其参数,使用“execute”命令,将返回的结果存储到rs1response.write(“<table border = 1>”)response.write(“<tr>”)for i=0 to rs1.fields.count-1response.write(“<td>”+rs(i).name+“</td>”)nextresponse.write(“</tr>”)’显示记录集的字段名称while not rs1.eofresponse.write(“<tr>”)for i=0 to rs1.fields.count-1response.write(“<td valign = top>”+rs1(i).value+”</td>”)nextresponse.write(“</tr>”)rs1.movenextwend’显示记录集的记录内容response.write(“</table>”)rs1.closecm1.close %>’关闭记录集和连接的对象</body></html>程序运行结果如下:班级名称学号姓名出生日期性别民族政治面貌办学形式法学9903 9903060001张三1980-08-05 男汉族中共党员统招法学9903 9903060008李佳丽1983-03-17 女侗族团员统招法学9903 9903060021李仁勇1982-11-02 男汉族团员统招参考文献:[1]袁玫,林志英,刘劲松.网络数据库应用教程[m].北京:人民邮电出版社,2001.[2]冯能山,李其艺.轻松学习-asp网络实用教程[m].北京:清华大学出版社,2002.[3]姚晓乐.web开发技术[m].北京:人民邮电出版社,1999.[4]王国荣.asp网页制作教程[m].北京:人民邮电出版社,2000.[5]魏应彬,周星,康耀红.网页设计与数据库发布技术. 北京:清华大学出版社,2002.。