用ASP、VB和XML建立互連網應用程式(2)

來源:互聯網
上載者:User
xml|程式|互連網 讓我們先分析一下用戶端/伺服器應用程式。在一個標準的用戶端/伺服器應用程式中,在應用程式開始時,你能夠初始化資料庫連接字串,這就意味著,客戶有使用資料庫連接字串的權利,這包括使用者名稱和口令。但是客觀情況如果不允許你在網路上發送這些資訊的話,你就必需在不聯結資料庫的情況下直接從用戶端取得資料發送給客戶。那麼解決方案之一就是在伺服器上建立一個ASP頁(在本例中稱為getData.asp)接收特定格式的POST資料,它要求一個包含XML字串,用來建立ADO對象並運行預存程序或動態SQL語句命令。如果資訊有效話,getData.asp執行預存程序,並返回一個XML格式的資料集、傳回值列表或錯誤頁面資訊的XML字串。對於返回資料的命令,用戶端要麼重新執行個體化要麼傳回值或使用XML DOM(Document Object Model文件物件模型)格式的錯誤頁面。

  好,下面就讓我們來討論一下如何?這個頁面吧!

  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



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.