簡體   English   中英

是否可以從SqlDbType.Xml類型的輸出SqlParameter創建XmlReader?

[英]Is it possible to create an XmlReader from output SqlParameter of type SqlDbType.Xml?

這是我的參數定義:

var param = new SqlParameter
{
    ParameterName = "@param",
    SqlDbType = SqlDbType.Xml,
    Direction = ParameterDirection.Output,
    Size = int.MaxValue
};
command.Parameters.Add(param);

然后我做:

command.ExecuteNonQuery();

最后:

XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
return serializer.Deserialize(
    new MemoryStream(Encoding.UTF8.GetBytes(param.Value.ToString())))
    as MyClass;

我真的需要轉換為字符串然后字節數組嗎?

使用Parameter.SqlValue將返回一個SqlXml實例,您可以使用CreateReader來獲取XML閱讀器。 然后使用XmlSerializer.Deserialize(XmlReader)覆蓋。

如果XML很大,則應考慮使用CommandBehavior.SequentialAccess

你也可以這樣做:

          cnn = new SqlConnection();
          cnn.ConnectionString = "xxxxxxxxxxxxxxxxx";
          cnn.Open();

          string selectQry = "SELECT [Xml] FROM [Table1] WHERE [PK_ID] = @ID";
          cmd = new SqlCommand(selectQry, cnn);
          cmd.Parameters.AddWithValue("@ID", ID);

          XmlReader reader = cmd.ExecuteXmlReader();

          if (reader.Read())
             xdoc.Load(reader);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM