ASP、VB和XML建互联网应用程序2
getData.asp页面首先使用一个DOMDocument对象来保存客户端发送的数据:
'创建DOMDocument对象
Set xml = Server.CreateObject ('msxml2.DOMDocument')
xml.async = False
然后,它装载POST数据
'装载POST数据
xml.Load Request
If xml.parseError.errorCode <> 0 Then
Call responseError ('不能装载XML信息。' & 'Description: ' & xml.parseError.reason & '<br>Line: ' & xml.parseError.Line)
End If
它能够返回commandtext元素值和returndata或returnvalue元素值。下面我只给出返回commandtext元素值的代码,其余代码请参看我下面所附的源程序。
Set N = xml.selectSingleNode('command/commandtext')
If N Is Nothing Then
Call responseError ('缺少 <sp_name> 参数。')
Else sp_name = N.Text
End If
接着,应该让页面创建一个Command对象,读入所有<param>元素,并且为request中的每一个元素创建一个参数。最后,让页面打开一个连接使用存储过程adExecuteNoRecords选项来执行request。
set conn = Server.CreateObject('ADODB.Connection')
conn.Mode=adModeReadWrite
conn.open Application('ConnectionString')
set cm.ActiveConnection=conn
' 返回数据
if not returnsData then
cm.Execute
else
set R = server.CreateObject('ADODB.Recordset')
R.CursorLocation = adUseClient
R.Open cm, ,adOpenStatic, adLockReadOnly
end if
如果能够返回数据的话,那么returnData变量就为真值,并且把结果数据集返回到客户端,仍然是一个XML文档。
if returnsData then
R.Save Response, adPersistXML
if err.number <> 0 then
call responseError ('数据集发生存储错误' & '在命令'' & CommandText & '': ' & Err.Description)
Response.end
end if
如果输出参数返回值,那么这个页面将返回一个包含这些值的XML字符串。文档的根元素是一个<values>标记,每一个返回值都有其相应的子元素,如果发生任何错误,页面都会格式化并返回一个包含错误信息的XML字符串:
Sub responseError(sDescription)
Response.Write '<response><data>错误: ' & sDescription & '</data></response>'
Response.end
End Sub
