文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页网页设计ASP实例 → 用ASP、VB和XML建立互联网应用程序3

用ASP、VB和XML建立互联网应用程序3

时间:2004/11/7 2:54:00来源:本站整理作者:蓝点我要评论(0)

假设在我们前面所说的例子中,我们想在应用程序中显示区域的左半边显示客户的姓名列表,再在每个客户姓名后面加上两个链接:Purchase History和Recent Purchase。当用户点击其中的一个链接,客户程序就会运行一个存储过程并在右边区域显示出结果。 为了显示这个想法的灵活性,我想让用于返回数据的三个操作单元执行不同的工作过程,它们都调用getData.asp。首先,通过调用CustOrderHist来运行一个存储过程,返回客户的Purchase History,它搜索Northwind数据库(为了方便起见我使用MS SQL中自带的数据库)并返回一个数据集。用于返回Recent Purchase 的查询语句运行一个叫RecentPurchaseByCustomerID的存储过程,来接收输入的CustomerID参数并通过ProductName参数返回最近顾客购买的商品名。定义其处理过程相应SQL语句如下:



  CREATE PROCEDURE RecentPurchaseByCustomerID @CustomerID nchar(5), @ProductName nchar(40) output AS SELECT @ProductName = (SELECT top 1 ProductName FROM Products INNER JOIN ([Order Details] INNER JOIN Orders ON Orders.OrderID=[Order Details].OrderID) ON Products.ProductID = [Order Details].ProductID WHERE Orders.OrderDate = (SELECT MAX(orders.orderdate) FROM Orders

where CustomerID=@CustomerID) AND Orders.CustomerID=@CustomerID) GO



  不管你的查询语句中含有动态SQL语句还是含有返回记录集的存储过程或是输出一个返回值,其处理POST消息的方法是一样的:



  set xhttp = createObject ("msxml2.XMLHTTP")

  xhttp.open "POST", "http://localhost/myWeb/ getData.asp", False

  xhttp.send s



  好了,现在让我们看一看如何发送和接收数据



  客户端的XML信息是由一个<command>元素和一些子元素组成:<commandtext>元素包含了存储过程的名称,<returnsdata>元素告诉服务器,客户端是否要求接收返回数据,<param>元素包含参数信息。如果不使用参数的话,那么最简单的发送字符串查询就象下面这样:



  <command>

   <commandtext>



  存储过程或动态SQL语句



  </commandtext>

   <returnsvalues>True</returnsvalues>

  </command>



  你可以为每一个参数使用一个<param>元素,来添加参数。每个<param>元素有五个子元素:name,type,direction,size和value。子元素的顺序可以随意调换,但是所有的元素都应当有不能缺少,我通常按照定义一个ADO对象的值的顺序来定义它们。举例来说,CustOrderHist存储过程需要一个CustomID参数,所以用来创建发送到getData.asp的XML字符串的代码为:



  dim s

   s = "<?xml version=""1.0""?>" & vbcrlf

   s = s & "<command><commandtext>"

   s = s & "CustOrderHist"

   s = s & "</commandtext>"

   s = s & "<returnsdata>" &True</returnsdata>"

   s = s & "<param>"

   s = s & "<name>CustomerID</name>"

   s = s & "<type><%=adVarChar%></type>"

   s = s & "<direction>" & <%=adParamInput%></direction>"

   s = s & "<size>" & len(CustomerID)& "</size>"

   s = s & "<value>" & CustomerID &"</value>"

   s = s & "</param>"

   s = s & "</command>"



  注意,前面的代码都是客户端代码,ADO常量是不在客户端定义的-这就是它们为什么使用<% %>标记围起来的原因。服务器在发送响应之前使用正确的值取代它们。getData.asp页有一个Response.ContentType,它的属性为"text/xml",这样,你就可以使用ResponseXML属性来返回结果了。当请求返回纪录,你就可以创建一个Recordset对象并且使用XMLHTTP来打开它:



  Dim R

   set R = createObject("ADODB.Recordset")

   R.open xhttp.responseXML



  当查询语句返回数据时,通过设置XMLHTTPRequest对象的responseXML属性来创建一个DOMDocument:



  Dim xml

   set xml = xhttp.responseXML



  输出参数的XML字符串的每个返回值都包含一个元素,它们都是根元素<values>的直接子元素,例如:



  <?xml version=""1.0"" encoding=""gb2312""?>

  <values>

  <paramname>value</paramname>

   <paramname>value</paramname>

  </values>



  如果你的数据使用别的国家的文字,你可能需要把编码属性用相应的编码替换,例如对于大部分欧洲语言,可以使用ISO-8859-1



  客户端页面使用返回的数据来格式化一个HTML字符串用于显示,如:



  document.all("details").innerHTML = <一些格式化的HTML字符串>








相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 迅雷新手完全入门手册 asp下面javascript上传图片限制格式大小方法告诉大家网页弹出窗口应用总结ASP常见错误类型大全asp常见错误分析和解决办法

人气排行 总是弹出visual studio 实时调试器 三种解决SQLSERVER存储过程及调用详解Asp获取真实IP地址ASP中连接Mssql的几种方法一个简单好用的UBB编辑器(含代码)如何用Split将字符串转换为数组并获取数组下ASP防止表单重复提交的办法告诉你免费的简单聊天室源代码