用ASP与ADO查询Web数据库

原创 2001年08月11日 20:06:00

用ASP与ADO查询Web数据库


  ASP和ADO简介

  DO中可用VBScript、JavaScript 语言来控制数据库的访问(而ASP恰恰是脚本语言的解释环境)和查询结果的输出;ADO中使用RecordSets对象对数据库进行操作;可以连接多种支持OD BC的数据库。数据查ASP(Active Server Pages)是一个服务器端的(Server-side)脚本执行环境,用户可用它产生和执行动态的、交互的、高性能的Web服务器应用程序。当脚本在服务器端而不是在客户端执行时,Web服务器将完成产生发往浏览器的HTML(Hypertext Markup Langua ge)页的所有工作。图1
  图1是ASP的工作模式。当浏览器向Web服务器提出文件(.asp)的请求时,一个ASP脚本就开始执行,这时Web服务器调用ASP,把该文件全部读入并执行每一条命令,然后将结果以HTML页面形式送回浏览器。
  ADO(ActiveX Data Object,ActiveX数据对象)是一个ASP内置的A ctiveX服务器组件(ActiveX Server Component),用于数据库访问,可把它与ASP结合起来,建立提供数据库信息的网页内容,对数据库进行查询、插入、更新、删除等操作。
  要执行ADO,服务器端须安装Windows NT Server和Internet I nformation Serv er(IIS),而客户端只要有IE或Netscape较新版本的浏览器即可。站点数据库访问的几种方案
  实现Web数据库访问大致可分为两类,一类是以Web服务器作为中介,把浏览器和数据源连接起来,在服务器端执行对数据库的操作;另一类是把应用程序和数据库下载到客户端,在客户端执行对数据库的访问。
  1. 公共网关接口CGI(Common Gateway Interface)
  当浏览器发出HTTP请求时,Web服务器执行相应的应用程序,访问站点数据库,并将查询结果以HTML格式送回到浏览器。这种方式有很多缺点,功能有限、开发困难,且不具备事务处理(Transaction)功能, 这在很大程度上限制了它的应用。
  2. Internet数据库连接器IDC(Internet Database Connector)
  这是一种简易方案,对数据库的操作仍然放在Web端,但用户可通过SQL(Structured Query Language)语句对数据库进行查询、输入、更新、删除等操作。IDC设计简易,不用编译就可直接执行,且支持对数据的多重查询(Multiple Query)。
  3. 先进数据库连接器ADC(Advanced Data Connector)
  前两种方案中对数据库的操作都是在服务器端进行,而ADC是在浏览器端执行数据查询动作。当浏览器提出对数据库的操作请求时,ADC 先将相应的数据库下载到浏览器端,在用户端对数据库进行操作。显然,这种方案效率很高。客户端对数据库的查询是由安装在客户端的A DC ActiveX Control完成的,而这个ActiveX Control是由站点服务器自动下载并安装在客户端的。
  4. ADO与ASP
  这是一种完全的Web数据库访问方案,可把ADO与ASP结合起来,建立提供数据库信息的网页内容,在网页中执行SQL命令,对数据库进行查询、插入、更新、删除等操作。A询实例:港澳证件信息查询
  本例要完成的操作是对港澳出入境数据库进行查询,客户可给出一种或几种查询条件,然后按要求显示查询结果。
  1. 确定数据源
  要访问网上数据库,首先设定数据来源。在服务器上打开"我的电脑"中的"控制面板",双击"ODBC";在"系统DSN"下选"添加",选出预先设好的数据库种类、名称和位置。这里要用到的是FoxPro数据库,数据源名称为GACX,主数据库名称为visa.dbf,编码数据库名称为zd.dbf 。
  2. ADO查询数据库的使用
  ADO查询数据库的设计方法是先用Server.CreatObject取得对象" ADODB.Connection "的一个实例,并用"Open"打开待访问的数据库:
  Set Conn=Server.CreatObject("ADODB.Connection")
  Conn.Open "待访问的数据库名称"
  然后执行SQL命令,即对数据库进行操作,这里要使用Execute命令 :
  Set RS =Conn .Execute( " Select ...From...Where...")下一步就可对数据库进行查询操作,要用到RecordSets对象的如下命令:
  * RS.Fildes.Count
   RecordSets的字段数
  * RS(i).Name
   第i个字段名
  * RS(i)
   第i个字段的记录
  * RS("字段名")
    指定字段的记录
  * RS.EOF
  是否指向最后一个字段 True or False
  * RS.MoveFirst
  指向第一条记录
  * RS.MovePrev
  指向前一条记录
  * RS.MoveNext
  指向后一条记录
  * RS.MoveLast
  指向最后一条记录
  * RS.GetRows
   将查询结果存放在数组中,然后再从数组中读取
  * RS.Properties.Count
   得到ADO的Connection或ResultSet的属性总数
  * RS.Properties(Item).Name 得到ADO的Connection或ResultSe t的属性名称
  * RS.Properties(Item)
   得到ADO的Connection或ResultSet的属性值
  3. 具体实现
  主页面为港澳证件信息查询,对应程序为gacx.asp。查询结果以两种方式显示,一是显示主要信息——港澳证件信息查询结果列表,对应程序为gacxlb.asp;一是显示全部信息——港澳证件信息查询结果, 对应程序为gacxxq.asp。如果查询条件不能满足时,还将显示一个提示页面,告诉用户不存在满足条件的结果,由程序gacxts.asp完成。
  根据客户提供的数据库和要求查询的各项内容建立查询、查询结果、查询结果列表页面,并给出一个简单的提示界面,告诉用户不存在满足条件的结果,请重新查询,这些工作可用FrontPage 98完成,整个页面应该做到简洁大方,主题鲜明。程序代码在Microsof t Visual I nterDev下编写。
  下面处理编码数据库zd.dbf中的内容。从图2中可看到有很多带下拉框的选项,例如"性别"、"出生地"等,这些选项的内容都是从zd.d bf数据库中提取出来的。因为有的选项内容很多,例如出境口岸有101 项之多,虽然也可用< select><option>...</option></se lect>格式在HTML页面中把各个选项列举出来,但将给程序的维护带来很大麻烦, 一旦编码数据库的内容有变动,程序也将作很多修改。而且带下拉框的选项都是在zd.dbf中编码,往主数据库中输入数据时这些选项都只输入编码,但显示时却不能显示编码,必须把编码对应的汉字显示出来。这段程序代码如下(以性别为例): 图2
  <%
  Set Conn=Server.CreatObject("ADODB.Connection")
  Conn.Open "GACX"
  Set RS =Conn.Execute("Select BC,MC From zd Where BC Like "se%"")
  Response.Write"<SELECT SIZE=1 NAME="SEX">"Do While Not R S.EOF
  Response.Write"<option value=‘"RS(0)"'>"&RS(1)
   Rs.MoveNext
  Loop
  Response.Write "</SELECT>"
  RS.Colse
  Conn.Colse
  %>
  其中,zd.dbf包含两个字段MC、BC,MC表示待编码项,如男、女,BC 表示编码,如性别编码的前两位为"se",男用"se1"表示,女用"se2" 表示。
  数据库查询中最重要的是如何取得查询条件。本例中要查询的项可以分为两类:一类是输入的text类的查询条件,另一类是从下拉框中选出来的项,在处理时要区别对待。te xt类型的查询条件很好处理, 例如姓名,笔者输入的内容命名为"xm",如果输入的查询项不为空时就增加一个查询条件"NAME=Request.Form("xm")"即可。下拉框的处理较复杂,当下拉框选中一项时,例如性别选中男,下拉框中输入的是"se 1"(但反映在数据库中时为"S EX=1",因为数据库中输入字典中带编码的项时只输入编码),就是要查询"SEX=se1"的项。处理时要把"se1"中的"1"提取出来,用一个函数mid即可,查询条件为"SEX=mid("se1",3, 1)",即从数据库中查找SEX=1的项,并把所有满足条件的项不重复地列举出来。
  查询结果显示很容易实现,只须把查询结果的每条记录按列表的方式显示出来即可,但在显示查询结果时要显示编码对应的汉字,就是到字典中去找编码为"se"&"1" 的项所对应的编码值,程序如下:
  <table border="1" width="95%" bordercolor="#C0C0C0" cell spacing="0" cell padding="0"
   bordercolorlight="#C0C0C0" bordercolordark="#C0C0C0" he ight="60">
  <tr>
  <td width="9%" align="center" height="1"><p align="cente r">姓  名</td>
   <td width="12%" align="center" height="1">档 案 号</td>
  <td width="6%" height="1"><p align="center">性别</td>
  ......
  </tr>
  <%i=1%>
  <%While Not RS.EOF %>
  <tr>
   <td width="9%" align="center" height="1"><%=RS ("name") %></td>
   <td width="12%" align="center"height="1"><%=RS ("dang") %></td>
   <td width="6%" height="1"><%=Func ("se" & RS("sex"),GAC X)%></td>
  ......
   </tr>
   <%RS.MoveNext%>
   <%i=i+1%><%WEnd%></table>
  其中,Func ("se" & RS("sex"),GACX)是个函数,实现从数据源中取得编码所对应的汉字的功能。

在MFC里面使用ADO访问微软的ACCESS数据库 实现增删改查

正如我上一篇博文提到,ADO这货和MFC没有任何关系,ADO 是一个独立的组件。所以为了使用ADO wi...
  • wenluderen
  • wenluderen
  • 2014年09月03日 16:43
  • 9466

C#使用Ado.Net读写数据库

记性不好,记几个C#读取显示数据库资料的方式,以便随时取用   try { String connStr = Confi...
  • gyming
  • gyming
  • 2013年12月24日 17:26
  • 12495

Java JDBC对应C# ADO连接数据库之区别

简单分析下和JDBC之间的区别,为像我这样的萌新提供一点帮助!菜鸟一只,讲的比较基础,大神直接跳过吧!...
  • qingming7573
  • qingming7573
  • 2016年11月12日 21:28
  • 1639

用asp与ado查询web数据库.rar

  • 2007年08月03日 10:56
  • 9KB
  • 下载

目 录关键词本文是一篇讨论基于Web的数据库管理的本科毕业论文,它详细地讲述了开发一个基于Web的通用BBS(Bullitin Board Syste统所用到的技术和方法。其中运用了ASP技术(Avtive Server Page)、ADO技术(ActiveX Data Object)、MS Access数据库技术、RegExp技术(Regular Expression 正则表达式)、VBScript及JavaScript脚本语言技术等等,并从几个不同的方面来对上述技术的实现方法进行了讨论。

  • 2008年12月09日 17:02
  • 824KB
  • 下载

ASP.NET开发大全第7章.数据库与ADO.NET基础

第7章  数据库与ADO.NET基础 数据库在任何应用程序开发中都非常的重要,特别在ASP.NET应用程序开发中,数据库通常被用来保存用户的信息、文章内容等数据,同时数据库也能够提供用户进行查询、搜...
  • lllxxxaaa123
  • lllxxxaaa123
  • 2014年07月25日 14:04
  • 1010

ASP.NET MVC 4用ADO.NET实体数据模型连接数据库

ADO.NET实体数据模型连接数据库,既可用来连接SQL Server数据库,也可以用来来接MySQL数据库,非常便捷方便,使用此法在代码具体实现的时候也很方便。     为了正常连接MySQL数据库...
  • vjudge
  • vjudge
  • 2015年04月24日 12:54
  • 2735

ASP数据库开发总结(ADO.NET小结)

原文:http://bbs.51aspx.com/showtopic-157.html 原文本来就很乱,初次接触asp+数据库,代码没有运行,待整理。 一.用SqlConnection连接SQL ...
  • dscyw
  • dscyw
  • 2013年05月11日 15:55
  • 731

asp.net使用ado连接数据库

///     /// 数据访问操作类     /// chy710.cnblogs.com     ///     public class SqlDAO     {    ...
  • yanabcdef
  • yanabcdef
  • 2017年04月07日 16:18
  • 523

ASP.NET && 实验六 && ADO.NET数据库访问技术(一)

实验六  ADO.NET数据库访问技术(一)   一. 目的和要求 掌握使用ADO。NET访问SQL Server数据库.掌握使用ADO.NET进行增加、删除、修改数据的方法。 二.实验课时 2课...
  • enzaikenan
  • enzaikenan
  • 2013年11月25日 13:08
  • 976
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用ASP与ADO查询Web数据库
举报原因:
原因补充:

(最多只允许输入30个字)