首页 > 学院 > 开发设计 > 正文

XML Web Service 数据交换

2019-11-17 05:25:26
字体:
来源:转载
供稿:网友
xml Web Service 数据交换 客户端调用服务器端的 Web 服务并传递包含数据的 DataSet (ds): PRivate Sub Synchronize()    Dim username As String = "JohnS"    Dim blnSUCcess As Boolean    ' 使用 XML Web Service 进行同步    Cursor.Current = Cursors.WaitCursor    Dim wsFeedback As New wsFeedback.feedback    blnSuccess = wsFeedback.InsertFeedback(ds, username)     Cursor.Current = Cursors.DefaultEnd Sub 服务器端的 Web 服务接受 DataSet 并将 XML 直接传递到 SQL Server 2000 存储的过程中,该过程使用 SQLXML(英文)和 OPENXML 解析 XML 并将新数据插入适当的表格。 <WebMethod()> _Public Function InsertFeedback(ByVal ds As DataSet, ByVal username As   String) As Boolean    Dim con As New SqlConnection(connectionstring)    Dim cmd As New SqlCommand("p_Feedback_i", con)    cmd.CommandType = CommandType.StoredProcedure     ' 设置参数    Dim prmXML As SqlParameter = cmd.Parameters.Add("@XML",       SqlDBType.NText)    prmXML.Direction = ParameterDirection.Input    prmXML.Value = ds.GetXml
     Dim prmUsername As SqlParameter = cmd.Parameters.Add("@Username",       SqlDbType.NVarChar)    prmUsername.Direction = ParameterDirection.Input    prmUsername.Value = username     Try    con.Open()        cmd.ExecuteNonQuery()    Catch ex As Exception        ' 处理、记录并重掷错误        Throw ex     Finally        con.Close()    End Try     Return True End Function The stored procedure inserts the new data: CREATE PROCEDURE p_Feedback_i   @XML ntext,   @Username nvarchar(50) AS SET NOCOUNT ON DECLARE @iDoc   integerDECLARE @Error   integer /* Create XML document. */EXEC sp_xml_preparedocument @iDoc OUTPUT, @XML
 /* Insert new records */INSERT INTO    Feedback      (      FeedbackID,      PlantSection,      Part,      DefectScope,      ScopeID,      DefectType,      RichInk,      Username      )SELECT     ID,      PlantSection,      Part,      DefectScope,      ScopeID,      DefectType,      RichInk,      @UsernameFROM OPENXML (@iDoc, '/DataSet/Feedback',2) WITH       (      ID   uniqueidentifier,      PlantSection   int,      Part      int,      DefectScope   int,      ScopeID   nvarchar(50),      DefectType   int,      RichInk      nvarchar(50)      ) SELECT @Error = @@ERRORIF (@Error <> 0)BEGIN   GOTO ErrorhandlerEND
 /* Remove the XML document*/EXEC sp_xml_removedocument @iDoc RETURN Errorhandler: IF NOT @iDoc IS NULL   EXEC sp_xml_removedocument @iDoc RAISERROR (@Error,16,1) RETURN  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表