社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 5845阅读
  • 1回复

ASP技术访问WEB数据库

级别: 经院博士
发帖
3975
铜板
4727
人品值
1147
贡献值
565
交易币
0
好评度
3833
信誉值
0
金币
0
所在楼道
学一楼
一. 访问WEB数据库的多种方案 ~)S Q{eK?&  
  目前在WINDOWS环境下有多种访问WEB数据库的技术,主要有: yrDWIU(8;6  
  1.公共网关接口CGI(Common Gateway Interface) >};6>)0  
  CGI是较早实现的技术。适用于多种服务器平台,如UNIX、WINDOWS等,但CGI的开发 zEQ<Q\"1  
成本高、维护困难、功能有限、不具备事务处理功能、占用服务器资源较多。 /f_c?|  
  2. INTERNET数据库连接器IDC(Internet Database Connector) J.`z;0]op  
  IDC集成在ISAPI(Internet Server API)中,充分利用了DLL技术,易扩充,但编程 KAR XC,z  
较CGI更为复杂,只适用于小型数据库系统。 ~dIb>[7wy  
  3. 先进数据库连接器ADC(Advance Database Connector) (okCZ-_Jn  
  ADC提供了ActiveX Control来访问数据库,它的主要特点是数据查询由用户端浏览 MuQBn7F{c  
器执行,因而需将服务器端数据库中的部分记录下载到用户端,系统开销较大、响应慢 E0nR Vg  
,只适用于特别频繁的数据库查询操作。  V/0?0VKG  
  4. JAVA/JDBC语言编程 IH$R X GL  
  JAVA语言是一种面向对象、易移植、多线程控制的语言,可通过JDBC去连接数据库 Y:nF.An3  
。用JAVA/JDBC编写的软件可移植性强,适用于多种操作系统,但其执行效率和执行速度 =jik33QV<  
还不理想,目前无法建立高效、高速的应用。 *>=vSRL0_  
  5. 动态服务器页面ASP(Active Server Page) ]~,V(K  
  ASP是微软公司最新推出的WEB应用开发技术,着重于处理动态网页和WEB数据库的开 mErXdb|L  
发,编程灵活、简洁,具有较高的性能,是目前访问WEB数据库的最佳选择。 "EoC7 1  
  二. ASP简介 62BJ;/ ]  
  1.ASP访问数据库的原理 3^LSK7.:  
  ASP是服务器端的脚本执行环境,可用来产生和执行动态的高性能的WEB服务器程序 CqXD z  
`ag7xd!  
  当用户使用浏览器请求ASP主页时,WEB服务器响应,调用ASP引擎来执行ASP文件, lR!Sdd} -  
并解释其中的脚本语言(JScript 或VBScript),通过ODBC连接数据库,由数据库访问组 Y$^x.^dT,  
件ADO(ActiveX Data Objects)完成数据库操作,最后ASP生成包含有数据查询结果的HT kT(}>=]g  
ML主页返回用户端显示。 Nk-biD/J  
  由于ASP在服务器端运行,运行结果以HTML主页形式返回用户浏览器,因而ASP源程 1}E`K#  
序不会泄密,增加了系统的安全保密性。此外,ASP是面向对象的脚本环境,用户可自行 x8a?I T.  
增加ActiveX组件来扩充其功能,拓展应用范围。 SL;\S74  
  2.ASP页面的结构: 0Fw0#eE  
  ASP的程序代码简单、通用,文件名由.asp结尾,ASP文件通常由四部分构成: Ozk^B{{o  
  1) 标准的HTML标记:所有的HTML标记均可使用。 +uF!.!}  
  2) ASP语法命令:位于 标签内的ASP代码。 ~Od4( }/G  
  3) 服务器端的include语句:可用#include语句调入其它ASP代码,增强了编程的灵 +$)C KC  
活性。 B| IQ/g?  
  4) 脚本语言:ASP自带JScript和VBScript两种脚本语言,增加了ASP的编程功能, e75 k-  
用户也可安装其它脚本语言,如Perl、Rexx等。 (89NK]2x  
  3.ASP的运行环境 o7feH 6Sh  
  目前ASP可运行在三种环境下。 (}Ql#q K  
  1) WINDOWS NT server 4.0运行IIS 3.0(Internet Information Server)以上。 #vy:aq<bjE  
  2) WINDOWS NT workstation 4.0运行Peer Web Server 3.0以上。 &bx;GG\<4  
  3) WINDOWS 95/98运行PWS(Personal Web Server)。 8wz4KG3SK  
  其中以NT server上的IIS功能最强,提供了对ASP的全面支持,是创建高速、稳定的 %h** L'~``  
ASP主页的最佳选择。 n:?fv=9n  
  4.ASP的内建对象 ^4LkKYMS  
  ASP提供了六个内建对象,供用户直接调用: F|*{Ma  
  1) Application对象:负责管理所有会话信息,可用来在指定的应用程序的所有用 R v9?<]  
户之间共享信息。 a;Ic!:L  
  2) Session对象:存贮特定用户的会话信息,只被该用户访问,当用户在不同WEB页 {~ yj]+Im  
面跳转时,Session中的变量在用户整个会话过程中一直保存。Session对象需cookie支 H/_R!G8 \  
持。 r}i<cyL  
  3) Request对象:从用户端取得信息传递给服务器,是ASP读取用户输入的主要方法 %$j)?e  
4C(vBKl  
  4) Response对象:服务器将输出内容发送到用户端。 NyD[9R?  
  5) Server对象:提供对服务器有关方法和属性的访问。 lz!F{mR  
  6) Object Context对象:IIS 4.0新增的对象,用来进行事务处理。此项功能需得 s-eC')w~E  
到MTS(Microsoft Transcation Server)管理的支持。 0s = h*"[  
  5. ASP的主要内置组件: 0 &U,WA  
  1) Ad Rotator组件:用来按指定计划在同一页上自动轮换显示广告,用于WWW上日 JMu|$"o&{  
益重要的广告服务。 ^4Ra$<  
  2) Browser Capabilities组件:确定访问WEB站点的用户浏览器的功能数据,包括 U,C L*qTF  
类型、性能、版本等。 #q~SfG  
  3) Database Access组件:提供ADO (ActiveX Data Objects)来访问支持ODBC的数 ^e$;I8l  
据库。 N2_j[Pe  
  4) File Access组件:提供对服务器端文件的读写功能。 (NUk{MTX  
  5) Content Linking组件:生成WEB页内容列表,并将各页顺序连接,用于制作导航 f\"Qgn  
条。 oK h#th  
  此外,还可安装Myinfo、Counters、Content Rotator、Page Count等组件,用户也 7?K?-Oj  
可自行编制Actiive组件,以提高系统的实用性。 wTFM:N  
  6. Database Access组件ADO 'kc_OvVA  
  WWW上很重要的应用是访问WEB数据库,用ASP访问WEB数据库时,必须使用ADO组件, )5lo^Qb  
ADO是ASP内置的ActiveX服务器组件(ActiveX Server Component),通过在WEB服务器上 b=a&!r5M  
设置ODBC和OLEDB可连接多种数据库:如SYBASE、ORACLE、INFORMIX、SQL SERVER、ACC xm>RLx}9  
ESS、VFP等,是对目前微软所支持的数据库进行操作的最有效和最简单直接的方法。 DCb\ =E  
  ADO组件主要提供了以下七个对象和四个集合来访问数据库。 ze Qgg|;  
  1) Connection对象:建立与后台数据库的连接。 >9W ;u`  
  2) Command对象:执行SQL指令,访问数据库。 . m_y5J  
  3) Parameters对象和Parameters集合:为Command对象提供数据和参数。 eL9 RrSXz  
  4) RecordSet对象:存放访问数据库后的数据信息,是最经常使用的对象。 E|D~:M%~  
  5) Field对象和Field集合:提供对RecordSet中当前记录的各个字段进行访问的功 *=L3bBu?  
能。 h0NM5   
  6) Property对象和Properties集合:提供有关信息,供Connection、Command、Re ZLdvzH@'  
cordSet、Field对象使用。 cgsM]2ZYs  
  7) Error对象和Errors集合:提供访问数据库时的错误信息。 u~yJFIo  
  三. ASP访问数据库步骤 |KF X0*70  
  在ASP中,使用ADO组件访问后台数据库,可通过以下步骤进行: e*uaxh+7  
  1. 定义数据源 OiX>^_iDt  
  在WEB服务器上打开“控制面板”,选中“ODBC”,在“系统DSN”下选“添加”, euM7> $`  
选定你希望的数据库种类、名称、位置等。本文定义“SQL SERVER”,数据源为“HT” $}<+~JpGfP  
,数据库名称为“HTDATA”,脚本语言采用Jscript。 wJJ4F$"b  
  2,使用ADO组件查询WEB数据库 )W'l^R4W  
  1) 调用Server.CreateObject方法取得“ADODB.Connection”的实例,再使用Open F\+wM*:U  
方法打开数据库: s+>""yi  
  conn = Server.CreateObject(“ADODB.Connection”) hG cq>Cvf  
  conn.Open(“HT”) #d%'BUde  
  2) 指定要执行的SQL命令 fGJPZe  
  连接数据库后,可对数据库操作,如查询,修改,删除等,这些都是通过SQL指令来 i TY4X:x  
完成的,如要在数据表signaltab中查询代码中含有“X”的记录 SF61rm  
  sqlStr = “select * from signaltab where code like ‘%X%’” .ag4i;hS8  
  rs = conn.Execute(sqlStr) \_FX}1Wc2.  
  3) 使用RecordSet属性和方法,并显示结果 In|:6YDL&  
  为了更精确地跟踪数据,要用RecordSet组件创建包含数据的游标,游标就是储存在 ~#iRh6 ^98  
内存中的数据。 gd[jYej'RP  
  rs = Server.CreateObject(“ADODB.RecordSet”) KotJ,s]B  
  rs.Open(sqlStr,conn,1,A) o)'T#uK  
  注:A=1读取 goi.'8M|/b  
  A=3 新增、修改、删除 T[s_w-<7$  
  在RecordSet组件中,常用的属性和方法有: I,vy__ sZ  
  rs.Fields.Count: RecordSet对象的字段数。 7/NXb  
  rs(i).Name: 第i个字段的名称,i为0至rs.Fields.Count-1 oK@!yYv  
  rs(i): 第i个字段的数据,i为0至rs.Fields.Count-1 S =q.Y  
  rs(字段名): 指定字段的数据。 Lm\N`  
  rs.Record.Count:游标中的数据记录总数。 .ps'{rl8  
  rs.EOF: 是否最后一条记录。 +ex@[grsGT  
  rs.MoveFirst: 指向第一条记录。 ; A~S){  
  rs.MoveLast: 指向最后一条记录。 oju7<b9Ez  
  rs.MovePrev: 指向上一条记录。 ?b2  
  rs.MoveNext: 指向下一条记录。 =)m2u2c M  
  rs.GetRows: 将数据放入数组中。 UiA\J  
  rs.Properties.Count:ADO的ResultSet或Connection的属性个数。  ~%_$e/T  
  rs.Properties(item).Name:ADO的ResultSet或Connection的名称。 9 )u*IGj  
  rs.Properties: ADO的ResultSet或Connection的值。 6 k+FTDL  
  rs.close(): 关闭连接。 J&S$F:HM  
  4) 关闭数据库 O>xGH0H  
  conn.close() .&.j?kb  
  四.查询WEB数据库举例 ?hvPPEJf  
  下面这段示例程序是访问SQL SERVER数据库的 signaltab表,表中有三个字段:co j$^3  
de(代码字段,字符型,3位),class(分类字段,字符型,10位),memo(备注字段,字符 EtJyI&7VK  
型,20位)。程序中数据源DSN:HT、用户名:client、口令:passwd。 * 7.!"rb8A  
  屏幕输入页面input.asp `?{QCBVj  
   (E59)z -  
   3N(s)N_P M  
   = ^:TW%O  
  请输入查询条件PLEASE INPUT CONDITION [=9-AG~}  
   M *BDrM  
   7+JQaYO`"  
   kVw5z3]Xg  
   KgX~PP>  
   *}Zd QJL  
   O^|dc=  
   `w6\II)aB  
   ,xB&{ J  
   d7qY(!&  
   ,K .P,z~*  
   Ojq>4=Z\  
   =2pGbD;*  
  数据库处理程序shotquery.asp R_\{a*lV0  
   Lv+lLK  
   ;rJR+wpNa  
  var signalCode=Request.Form(signalCode); EP&iG%(k  
  dbConn = Server.CreateObject(ADODB.Connection); )6iY9[@tN  
  dbConn.open(DSN=HT;UID=client;PWD=passwd); n;Tpf<*U  
  rs = Server.CreateObject(ADODB.RecordSet); MPA<?  
  var sqlStr = select * from signaltab order by code; Z; Xg5  
  rs.open(sqlStr,dbConn,1); )Y RVy  
  if(rs.RecordCount     无符合条件记录); x;S v&  
  Response.write(     ); eX7Ev'(H  
  } jI(~\`  
  else { IBb3A  
  Response.write(数据查询结果); (%"M% Qko  
  Response.write(代码分类备注); P0S ;aE  
  for(var i = 1;i +rs(code)+); rA&|!1q"B  
  Response.write(+rs(class)+); mf6?8!O}>  
  Response.write(+rs(memo)+);  y$7Fq'  
  Response.write(); MFcN.M  
  rs.MoveNext(); g e:UliHJ  
  } 5i7,s  
  else break; "0 \U>h  
  } 4%~$A`7  
  Response.write(); &Eg>[gAIlp  
  rs.close(); n|IdEgD$  
  dbConn.close(); ~F^=7oq  
  } ChF:N0w? p  
   1.!rq,+>1  
R K#e7  
GrjL9+|x  
_aL:XKM  
转自: ASP教程采集
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
引用

引用
想找我?如果我即不在 石家庄经济学院论坛www.uebbs.net,也不在宿舍,那,我肯定是在去的路上

引用
级别: 经院高中
发帖
369
铜板
3800
人品值
215
贡献值
0
交易币
0
好评度
305
信誉值
0
金币
0
所在楼道
只看该作者 1 发表于: 2006-07-20
这篇不评论了........
描述
快速回复

您目前还是游客,请 登录注册
欢迎提供真实交流,考虑发帖者的感受
认证码:
验证问题:
10+5=?,请输入中文答案:十五