ADO.NET. Управление базами данных. Связь по схеме OLE DB провайдера. Коррекция стилей DataGridView, страница 39

Попытайтесь с помощью студии открыть файл Students.stud, созданный методом Serialize. Так как файл содержит символы русского языка, то при открытии, она выберет двоичный редактор. Заставьте студию открыть файл с помощью команды Open With, контекстного меню или выпадающего списка кнопки Open файлового диалога. При этом откроется диалог, который попросит выбрать из списка инструмент для открытия файла. Укажите на строку "XML Editor with Encoding". Откроется еще один диалог Encoding, в окне которого надо выбрать один из типов кодировки. Строка: "Cyrillic (Windows) Codepage 1251" позволит увидеть все, что нам важно видеть.

Напомним, класс BinaryFormatter создает двоичный файл. Такие файлы в принципе не являются текстовыми и не должны быть читаемыми, так как единственная цель сериализации — надежное восстановление DataSet в памяти. Тем не менее, файл содержит два читаемых фрагмента на языке XML. Начальный фрагмент файла (заголовок) не является правильным XML-документом и используется для служебных целей, но далее мы видим вполне читаемую схему DataSet, а еще дальше вполне читаемые данные в формате XML. Так как DataSet является копией базы данных, то можно сказать, что мы видим схему БД. Эта схема, за исключением мелких деталей, совпадает с той, что была выведена методом WriteXml.

Язык схем XSD

Язык XSD (Extended Schema Definitions) является важной частью XML-технологий. Он описывает структуру XML-документа или базы данных. Microsoft Visual Studio находит широкое применение XSD-схемам. С помощью схем можно выполнить несколько различных функций.

·  Проверить XML-документ и отметить нарушения формата, автматизируя, тем самым процесс проверки XML-документов (XML-validation),

·  Опубликовать структуру таблиц базы данных для того, чтобы другие программы смогли создать копию БД,

·  С помощью схем мастера студии способны генерировать код типизированных наборов данных (DataSet),

·  Студия способна генерировать код методов для работы с данными таблиц типизированных DataSet,

·  Существует возможность генерировать отдельные команды, реализующие SQL-запросы.

Рассмотрим схему нашего документа.

<xs:schema id="StudsExams" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"

  xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

   <xs:element name="StudsExams" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">

    <xs:complexType>

      <xs:choice minOccurs="0" maxOccurs="unbounded">

        <xs:element name="Studs">

           <xs:complexType>

             <xs:sequence>

               <xs:element name="StudID" msdata:AutoIncrement="true" type="xs:int" />

               <xs:element name="Name" minOccurs="0">

                 <xs:simpleType>

                   <xs:restriction base="xs:string">

                     <xs:maxLength value="50" />

                   </xs:restriction>

                 </xs:simpleType>

               </xs:element>

               <xs:element name="Phone" minOccurs="0">

                 <xs:simpleType>

                   <xs:restriction base="xs:string">

                     <xs:maxLength value="30" />

                   </xs:restriction>

                 </xs:simpleType>

               </xs:element>

               <xs:element name="Addr" minOccurs="0">

                 <xs:simpleType>

                   <xs:restriction base="xs:string">

                     <xs:maxLength value="255" />

                   </xs:restriction>

                 </xs:simpleType>

               </xs:element>

             </xs:sequence>

           </xs:complexType>

        </xs:element>