2011-03-04 100 views
3

这是我的参数定义:是否可以从SqlDbType.Xml类型的输出SqlParameter创建一个XmlReader?

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; 

我真的需要转换为字符串,然后将字节数组?

+0

你不能只选择它并使用ExecuteXmlReader? – 2011-03-04 22:26:28

+0

@Marc:SQL代码有点超出我的控制范围。 – Schultz9999 2011-03-04 23:25:42

回答

0

你也可以做到这样:

  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); 
相关问题