分享
 
 
 

ASP技术访问WEB数据库(转载)

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

一. 访问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数据库的最佳选择。

二. ASP简介

1.ASP访问数据库的原理

ASP是服务器端的脚本执行环境,可用来产生和执行动态的高性能的WEB服务器程序

当用户使用浏览器请求ASP主页时,WEB服务器响应,调用ASP引擎来执行ASP文件,

并解释其中的脚本语言(JScript 或VBScript),通过ODBC连接数据库,由数据库访问组

件ADO(ActiveX Data Objects)完成数据库操作,最后ASP生成包含有数据查询结果的HT

ML主页返回用户端显示。

由于ASP在服务器端运行,运行结果以HTML主页形式返回用户浏览器,因而ASP源程

序不会泄密,增加了系统的安全保密性。此外,ASP是面向对象的脚本环境,用户可自行

增加ActiveX组件来扩充其功能,拓展应用范围。

2.ASP页面的结构:

ASP的程序代码简单、通用,文件名由.asp结尾,ASP文件通常由四部分构成:

1) 标准的HTML标记:所有的HTML标记均可使用。

2) ASP语法命令:位于<% %> 标签内的ASP代码。

3) 服务器端的include语句:可用#include语句调入其它ASP代码,增强了编程的灵

活性。

4) 脚本语言:ASP自带JScript和VBScript两种脚本语言,增加了ASP的编程功能,

用户也可安装其它脚本语言,如Perl、Rexx等。

3.ASP的运行环境

目前ASP可运行在三种环境下。

1) WINDOWS NT server 4.0运行IIS 3.0(Internet Information Server)以上。

2) WINDOWS NT workstation 4.0运行Peer Web Server 3.0以上。

3) WINDOWS 95/98运行PWS(Personal Web Server)。

其中以NT server上的IIS功能最强,提供了对ASP的全面支持,是创建高速、稳定的

ASP主页的最佳选择。

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)管理的支持。

5. ASP的主要内置组件:

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组件,以提高系统的实用性。

6. Database Access组件ADO

WWW上很重要的应用是访问WEB数据库,用ASP访问WEB数据库时,必须使用ADO组件,

ADO是ASP内置的ActiveX服务器组件(ActiveX Server Component),通过在WEB服务器上

设置ODBC和OLEDB可连接多种数据库:如SYBASE、ORACLE、INFORMIX、SQL SERVER、ACC

ESS、VFP等,是对目前微软所支持的数据库进行操作的最有效和最简单直接的方法。

ADO组件主要提供了以下七个对象和四个集合来访问数据库。

1) Connection对象:建立与后台数据库的连接。

2) Command对象:执行SQL指令,访问数据库。

3) Parameters对象和Parameters集合:为Command对象提供数据和参数。

4) RecordSet对象:存放访问数据库后的数据信息,是最经常使用的对象。

5) Field对象和Field集合:提供对RecordSet中当前记录的各个字段进行访问的功

能。

6) Property对象和Properties集合:提供有关信息,供Connection、Command、Re

cordSet、Field对象使用。

7) Error对象和Errors集合:提供访问数据库时的错误信息。

三. ASP访问数据库步骤

在ASP中,使用ADO组件访问后台数据库,可通过以下步骤进行:

1. 定义数据源

在WEB服务器上打开“控制面板”,选中“ODBC”,在“系统DSN”下选“添加”,

选定你希望的数据库种类、名称、位置等。本文定义“SQL SERVER”,数据源为“HT”

,数据库名称为“HTDATA”,脚本语言采用Jscript。

2,使用ADO组件查询WEB数据库

1) 调用Server.CreateObject方法取得“ADODB.Connection”的实例,再使用Open

方法打开数据库:

conn = Server.CreateObject(“ADODB.Connection”)

conn.Open(“HT”)

2) 指定要执行的SQL命令

连接数据库后,可对数据库操作,如查询,修改,删除等,这些都是通过SQL指令来

完成的,如要在数据表signaltab中查询代码中含有“X”的记录

sqlStr = “select * from signaltab 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-1

rs("字段名"): 指定字段的数据。

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()

四.查询WEB数据库举例

下面这段示例程序是访问SQL SERVER数据库的 signaltab表,表中有三个字段:co

de(代码字段,字符型,3位),class(分类字段,字符型,10位),memo(备注字段,字符

型,20位)。程序中数据源DSN:HT、用户名:client、口令:passwd。

屏幕输入页面input.asp

<% @ language=javascript %>

<html>

<head>

<title>请输入查询条件PLEASE INPUT CONDITION</title>

</head>

<form action=shotquery.asp METHOD="post" target="_self">

<input TYPE="text" size=6 maxlength=3 NAME=signalCode VALUE="代码"> </fo

nt></p>

</center></div><p></p>

<input LANGUAGE="JavaScript" TYPE="submit" VALUE=“确认” NAME="B1"

<input TYPE="reset" VALUE=“清除”NAME="B2">

<input LANGUAGE="JavaScript" TYPE="button" NAME="B3" VALUE=“返回”

ONCLICK="window.history.back()">

</font></p>

</center></div>

</form>

</body>

</html>

数据库处理程序shotquery.asp

<!--#include virtual="/master/lib.inc"-->

<script language=javascript runat=server>

var signalCode=Request.Form("signalCode");

dbConn = Server.CreateObject("ADODB.Connection");

dbConn.open("DSN=HT;UID=client;PWD=passwd");

rs = Server.CreateObject("ADODB.RecordSet");

var sqlStr = "select * from signaltab order by code";

rs.open(sqlStr,dbConn,1);

if(rs.RecordCount < 1) {

Response.write("<p> 无符合条件记录</p>");

Response.write("<p><form> <input type='button' value=' 返回' oncli

ck='window.history.back()' name='b1'></form></p>");

}

else {

Response.write("<P><center><B>数据查询结果</B></center></P>");

Response.write("<tr><td><b>代码</b></td><td><b>分类</b></td><td><b>备注<

/b></td>");

for(var i = 1;i <= rs.Pagesize;i++) {

if(!rs.Eof) {

Response.write("<td><span style='font-size:9t'>"+rs("code")+"</span></td

>");

Response.write("<td><span style='font-size:9t'>"+rs("class")+"</span></t

d>");

Response.write("<td><span style='font-size:9t'>"+rs("memo")+"</span></td

>");

Response.write("</tr>");

rs.MoveNext();

}

else break;

}

Response.write("</table></form>");

rs.close();

dbConn.close();

}

</script>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有