Wywołanie procedury składowanej z typem danych XML

Wywołanie procedury składowanej z typem danych XML

Musisz przekazać xml jako ciąg znaków.

Ale jeśli nie potrzebujesz funkcji xml w bazie danych, możesz rozważyć użycie varbinary do przechowywania plików.

AKTUALIZACJA!!!!!!

Dziękuję. Mam to do pracy. Dodano następujący kod:

StringWriter sw = new StringWriter(); 
XmlTextWriter xw = new XmlTextWriter(sw); 
doc.WriteTo(xw); 
StringReader transactionXml = new StringReader(sw.ToString()); 
XmlTextReader xmlReader = new XmlTextReader(transactionXml); 
SqlXml sqlXml = new SqlXml(xmlReader); 

Przekształcenie go w ciąg nie wystarczyło. Otrzymałem następujący błąd:parsowanie XML:linia 1, znak 38, nie można przełączyć kodowania”. Przekonwertowałem więc na ciąg, a następnie przekryłem go do SqlXml i zadziałało.


Aby to zrobić za pomocą XDocument , XElement lub inne XNode , wypróbuj następujące:

XDocument doc = new XDocument(
    new XElement("Person", 
        new XAttribute("Name", "John")));
cmd.Parameters.Add("@FileContent", SqlDbType.Xml);
cmd.Parameters["@FileContent"].Value = new SqlXml(doc.CreateReader());

Innym sposobem na zrobienie tego, jeśli nie masz nic przeciwko utracie deklaracji xml (wersja i kodowanie), jest po prostu:

XML.DocumentElement.OuterXml 'where XML is a XMLDocument