sql >> Databasteknik >  >> RDS >> Sqlserver

Vad översätts SQL Server XML-datatypen till i .NET och hur konverterar jag den till XmlDocument?

Det översätts till SqlXml och du kan skaffa en XmlReader med SqlXml.CreateReader från det. Du måste använda SqlDataReader.GetSqlXml metod för att få typen istället för en sträng.

Till exempel:

        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            SqlXml xmlData =
            reader.GetSqlXml(0);
            XmlReader xmlReader = xmlData.CreateReader();

            xmlReader.MoveToContent();
            while (xmlReader.Read())
            {
                if (xmlReader.NodeType == XmlNodeType.Element)
                {
                    string elementName = xmlReader.LocalName;
                    xmlReader.Read();
                    Console.WriteLine(elementName + ": " + xmlReader.Value);
                }
            }
        }

UPPDATERING: För att svara på en användbar kommentar från @Wiktor Zychla

Prestanda för detta tillvägagångssätt är bättre och kan vara mycket bättre när man hanterar stora XML-fält eftersom SqlReader.GetString kommer att ladda fältinnehållet i en sträng först medan SqlReader.GetSqlXml skapar en XmlReader från strömmen direkt. Det kan snabbt verifieras med en titt på System.Data i Reflector eller ett liknande verktyg.



  1. Skapa regel för att begränsa specialtecken i tabellen i sql-servern

  2. Hur ställer man in '5 dagar' (datumtidsintervall) i jdbc för PostgreSQL?

  3. Hur man använder Global Temporary Table i Oracle Procedur?

  4. Problem med mysqldump:--defaults-extra-file-alternativet fungerar inte som förväntat