Bài 7 Thực thi các hoạt động xử lý XML theo cơ chế dữ liệu ngắt kết nối - Công nghệ ADO.NET với C#


Lớp DataSet chứa các phương thức ghi dữ liệu, ghi schema hoặc cả hai vào tập tin XML. Lớp DataSet cũng chứa các phương thức load dữ liệu,load schema hoặc cả hai từ tập tin XML vào DataSet


1. Biểu diễn DataSet dưới dạng XML

  • Lưu DataSet ra XML
  • Đọc XML vào DataSet

Biểu diễn DataSet dưới dạng XML

Giới thiệu sơ qua về sự trao đổi dữ liệu theo hình trên:

  • Lớp DataSet chứa các phương thức ghi dữ liệu, ghi schema hoặc cả hai vào tập tin XML
  • Lớp DataSet cũng chứa các phương thức load dữ liệu,load schema hoặc cả hai từ tập tin XML vào DataSet

Lưu DataSet ra XML: Dùng 2 phương thức sau của DataSet

  • WriteXml(String [, XmlWriteMode]) XmlWriteMode: có ghi inline schema kèm theo dữ liệu không
  • WriteXmlSchema(String): ghi cấu trúc DataSet ra XML schema

Đọc XML vào DataSet: Dùng 2 phương thức sau của DataSet

  • ReadXml(String [, XmlReadMode]) XmlReadMode: xác định cách đọc dữ liệu XML và Schema liên quan
  • ReadXmlSchema(String): đọc cấu trúc của DataSet mà không cần load dữ liệu

2. DiffGrams là gì?

  • Là một định dạng của XML
  • Dùng để nhận dạng phiên bản gốc và hiện hành của các thành phần dữ liệu

Định dạng của DiffGram

DiffGram gồm 3 khối thành phần như sau:

  1. <DataInstance>
    • DataInstance chính là tên của thành phần này, thường là tên DataSet hoặc Datatable
    • Khối này dùng để chứa dữ liệu hiện hành
    • Khi dữ liệu thay đổi thì nó sẽ được nhận dạng thông qua thuộc tính diffgr:hasChanges
  2. <diffgr:before>
    • Khối này dùng để chứa phiên bản gốc của dữ liệu
    • Các thành phần trong khối này giống với khối <DataInstance> và được nhận dạng thông qua thuộc tính diffgr:id
  3. <diffgr:errors>
    • Khối này dùng để chứa thông tin lỗi của một dòng cụ thể trong khối <DataInstance>
    • Các thành phần trong khối này giống với khối <DataInstance> và được nhận dạng thông qua thuộc tính diffgr:id

Định dạng của DiffGram

Các thuộc tính của DiffGram

  • id: định danh cho mỗi dòng, được kết hợp bởi [TableName][RowIdentifier]
  • parentId: nhận dạng thành phần cha của nó
  • hasChanges: nhận dạng thành phần hiện hành có được cập nhật không. Nếu có cập nhật thì dữ liệu gốc sẽ xuất hiện trong khối <diffgr:before>

Các thuộc tính đi kèm của các khối

  • hasErrors: nhận dạng thành phần hiện hành có bị lỗi hay không. Lúc đó dữ liệu gốc sẽ xuất hiện trong khối <diffgr:errors>
  • Error: chứa chuỗi mô tả lỗi trong khối <diffgr:errors>

Bài viết tiếp theo

Chia sẽ bài viết :