[英]Is it possible to create an XmlReader from output SqlParameter of type SqlDbType.Xml?
This is my parameter definition: 这是我的参数定义:
var param = new SqlParameter
{
ParameterName = "@param",
SqlDbType = SqlDbType.Xml,
Direction = ParameterDirection.Output,
Size = int.MaxValue
};
command.Parameters.Add(param);
Then I do: 然后我做:
command.ExecuteNonQuery();
And finally: 最后:
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
return serializer.Deserialize(
new MemoryStream(Encoding.UTF8.GetBytes(param.Value.ToString())))
as MyClass;
Do I really need to convert to string and then byte array? 我真的需要转换为字符串然后字节数组吗?
Use Parameter.SqlValue
, will return a SqlXml
instance and you can use CreateReader
to get an XML reader. 使用Parameter.SqlValue
将返回一个SqlXml
实例,您可以使用CreateReader
来获取XML阅读器。 Then use the XmlSerializer.Deserialize(XmlReader)
overwrite. 然后使用XmlSerializer.Deserialize(XmlReader)
覆盖。
If the XML is large, you should consider using CommandBehavior.SequentialAccess
. 如果XML很大,则应考虑使用CommandBehavior.SequentialAccess
。
You can also do in this way: 你也可以这样做:
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.