Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво означава XML типът данни на SQL Server в .NET и как да го конвертирам в XmlDocument?

Превежда се на SqlXml и можете да получите XmlReader с SqlXml.CreateReader от него. Трябва да използвате SqlDataReader.GetSqlXml метод за получаване на типа вместо низ.

Например:

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

АКТУАЛИЗАЦИЯ: За да отговорите на полезен коментар от @Wiktor Zychla

Производителността на този подход е по-добра и може да бъде много по-добре, когато работите с големи XML полета, защото SqlReader.GetString първо ще зареди съдържанието на полето в низ, докато SqlReader.GetSqlXml създава XmlReader директно от потока. Това може бързо да се провери с поглед към System.Data в Reflector или подобен инструмент.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо изгледът за динамично управление на SQL Server 2005 отчита липсващ индекс, когато не е?

  2. Извличане на имена на колони и типове на съхранена процедура?

  3. как да извлека само годината от датата в sql server 2008?

  4. Изходни данни от текущия месец?

  5. Как мога да задействам тригер ПРЕДИ изтриване в T-SQL 2005?