当前位置: 移动技术网 > IT编程>开发语言>.net > 用ASP、VB和XML建立互联网应用程序(3)

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

2018年12月28日  | 移动技术网IT编程  | 我要评论

ca4519,淘宝网瑜伽垫,桂花的功效

假设在我们前面所说的例子中,我们想在应用程序中显示区域的左半边显示客户的姓名列表,再在每个客户姓名后面加上两个链接:purchase history和recent purchase。当用户点击其中的一个链接,客户程序就会运行一个存储过程并在右边区域显示出结果。 为了显示这个想法的灵活性,我想让用于返回数据的三个操作单元执行不同的工作过程,它们都调用getdata.。首先,通过调用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 ("msxml(标准化越来越近了)2.xml(标准化越来越近了)http")
  xhttp.open "post", "https://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对象并且使用xml(标准化越来越近了)http来打开它:

  dim r
   set r = createobject("adodb.recordset")
   r.open xhttp.responsexml(标准化越来越近了)

  当查询语句返回数据时,通过设置xml(标准化越来越近了)httprequest对象的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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网