0

Windows CE 用のアプリに取り組んでおり、SQL サーバーのストアド プロシージャにアクセスしようとしています。

XML パラメータを渡す必要がありますが、次の実行時例外が発生します。

Invalid SqlDbType enumeration value: 25

この行で:

SqlParameter XMLDoc = new SqlParameter("@XMLDoc", SqlDbType.Xml);

通常の .net フレームワークでも同じコードが機能するので、コンパクト フレームワークに固有のものだと思います。

msdn は、コンパクトなフレームワークでサポートされていると述べています。

どんな助けでも大歓迎です。

4

1 に答える 1

1

私も似たような経験があり、これが私がそれを管理した方法です。

以下SqlDbType.NVarCharの代わりに使用SqlDbType.Xml

DataSet dsWithSomeTable=new DataSet("NameSpace");
tblTable.TableName="Table";
dsWithSomeTable.Tables.Add(tblTable);

  SqlParameter xml = new SqlParameter
            {
                ParameterName = "@XML",
                SqlDbType = SqlDbType.NVarChar,
                Value = dsWithSomeTable.GetXml()
            };

もう一方のストアド プロシージャでは、XML 型に変換して処理します。

-- =============================================
-- Description: Inserts records from CE device
-- =============================================
CREATE PROCEDURE [Inventory].[uspCEInserXML] 
    @XML NVARCHAR(MAX) = NULL
AS
BEGIN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
--Receives parameter as NVarchar since the CE environment doesnt support XML type param
--and converting into XML
DECLARE @CXML XML=CAST(@XML AS XML)
 SELECT              
      XTab.value('Col1[1]','int') AS[Col1],                   
      XTab.value('Col2[1]','int') AS[Col2],              
      XTab.value('Col3[1]','float') AS[Col3]
 INTO #TMP
 FROM @CXML.nodes('NameSpace/Table') XTab([XTab])              
END
GO 
于 2013-06-26T09:12:31.260 に答える