与服务器交换数据
下图演示了如何使用 Web 服务交换数据。在企业解决方案中,经常使用集成平台,例如 Biztalk Server(英文)。
 图 2:XML Web Service 数据交换
Pocket PC 客户端调用服务器端的 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.Default End 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 integer DECLARE @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, @Username FROM OPENXML (@iDoc, '/DataSet/Feedback',2) WITH ( ID uniqueidentifier, PlantSection int, Part int, DefectScope int, ScopeID nvarchar(50), DefectType int, RichInk nvarchar(50) )
SELECT @Error = @@ERROR IF (@Error <> 0) BEGIN GOTO Errorhandler END
/* 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 | 下图演示了 SQL Server CE 远程数据访问和合并复制数据交换。
 图 3:数据库驱动的数据交换
小结
了解数据特性、连接和系统结构对于确定适合的数据访问策略非常必要。请务必注意,Pocket PC 解决方案可用于若干种大不相同的情况。因此,数据访问策略很可能能够根据当前的情况和设置定义本地 XML 文件、SQL Server CE 数据库和 Web 服务的使用,以及 SQL Server CE 远程数据访问和合并复制的使用。
.NET Compact Framework 使系统设计人员和开发人员能够根据若干不同情况选择适合的数据访问方法。使用定义的数据访问策略和新的工具箱,可以比较容易地将重点放在实际解决方案的优点和设计上。
|