sql >> Database >  >> RDS >> Sqlserver

Wat vertaalt het SQL Server XML-gegevenstype naar .NET en hoe converteer ik het naar XmlDocument?

Het vertaalt zich naar SqlXml en je kunt een XmlReader . krijgen met SqlXml.CreateReader ervan. U moet SqlDataReader.GetSqlXml methode om het type te krijgen in plaats van een string.

Bijvoorbeeld:

        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);
                }
            }
        }

UPDATE: Om een ​​nuttige opmerking van @Wiktor Zychla te beantwoorden

De prestaties van deze aanpak zijn beter en kunnen veel . zijn beter bij het omgaan met grote XML-velden omdat SqlReader.GetString laadt de veldinhoud eerst in een string terwijl SqlReader.GetSqlXml maakt rechtstreeks een XmlReader van de stream. Dat kan snel worden geverifieerd met een blik op System.Data in Reflector of een vergelijkbare tool.



  1. retourneer lege rijen voor niet-bestaande gegevens

  2. Mysql werkt een rij bij met een andere rijwaarde in dezelfde tabel

  3. MySql Triggers om onderliggende records in dezelfde tabel te verwijderen

  4. Converteer 'time' naar 'datetime2' in SQL Server (T-SQL-voorbeelden)