Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Na co przekłada się typ danych XML SQL Server w .NET i jak przekonwertować go na XmlDocument?

Przekłada się na SqlXml i możesz otrzymać XmlReader z SqlXml.CreateReader z tego. Musisz użyć SqlDataReader.GetSqlXml metoda, aby uzyskać typ zamiast ciągu.

Na przykład:

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

AKTUALIZACJA: Aby odpowiedzieć na pomocny komentarz od @Wiktor Zychla

Wydajność tego podejścia jest lepsza i może być dużo lepiej w przypadku dużych pól XML, ponieważ SqlReader.GetString najpierw załaduje zawartość pola do ciągu, podczas gdy SqlReader.GetSqlXml tworzy XmlReader bezpośrednio ze strumienia. Można to szybko zweryfikować, patrząc na System.Data w Reflectorze lub podobnym narzędziu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zarządzaj plikami MDF w SQL Server 2019

  2. Czy instrukcja WITH jest wykonywana raz na zapytanie, czy raz na wiersz?

  3. SQL Grant wykonuje się na wielu obiektach

  4. Brak wsparcia dla OVER w MS SQL Server 2005?

  5. Notacja kropkowa SQL