Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Kiểu dữ liệu SQL Server XML dịch sang .NET là gì và làm cách nào để chuyển đổi nó sang XmlDocument?

Nó dịch thành SqlXml và bạn có thể nhận được XmlReader với SqlXml.CreateReader từ nó. Bạn phải sử dụng SqlDataReader.GetSqlXml để lấy kiểu thay vì một chuỗi.

Ví dụ:

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

CẬP NHẬT: Để trả lời nhận xét hữu ích từ @Wiktor Zychla

Hiệu suất của phương pháp này tốt hơn và có thể rất nhiều tốt hơn khi xử lý các trường XML lớn vì SqlReader.GetString sẽ tải nội dung trường vào một chuỗi trước tiên trong khi SqlReader.GetSqlXml tạo một XmlReader từ luồng trực tiếp. Điều đó có thể nhanh chóng được xác minh bằng cách xem System.Data trong Reflector hoặc một công cụ tương tự.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một mô hình khung thực thể mở rộng nhiều cơ sở dữ liệu

  2. Tại sao các truy vấn SQL với hàm VBA chạy quá chậm?

  3. Tạo bản sao lưu máy chủ Sql trên máy cục bộ

  4. Cách dễ dàng xây dựng lại cơ sở dữ liệu tổng thể trong SQL Server

  5. Mối quan hệ 1-1 với khóa chính khác nhau trong mã EF 6.1 Đầu tiên