Иллюстрированный самоучитель по Architecture .NET

DataSet (Набор данных) и XML

Для иллюстрации связи между реляционной моделью объекта DataSet (Набор данных) и моделью ХМ L прежде всего извлечем некоторую информацию из базы данных. В примере DataSetXml для этого используются те же команды и способы, что и ранее в этой главе.

Первым делом создадим соединение, набор данных и преобразователь данных для различных таблиц.

SqlConnect]on *conn =
new SqlConnect K>n (connectStr ing);
DatdSet *d – new Pdtr.Set ("Ад r±ineBroker");
// новый Набор данных SqlDjtaAd.-pter "air ] i – n^s Adaptcr =
new Sq]DataAoar te L; SqiDctaAaapter * f 1 ^qn4 – sAdapter –
new SqlLataAdapter; SqlDataAdapter ^plar.etypeAdapter =
new SqlDdtdAdapter; SqlDataAdapter *custon,ersAdaptei =
new SqlDataAaapter; SqlDataAdapter ^reservationsAaapter –
new SqlDataAaapter;

Затем создадим несколько команд select (выбрать) для получения данных, и, используя эти команды, заполним набор данных данными из таблиц.

airlinesAdapter › SelectCommand =
new SqlCommand("select * from Airlines", conn);
// "выбрать * из Авиалиний " airlinesAdapter › Fill(d, "Airlines");
// Заполнить (d, "Авиалинии");
flightsAdapter › SelectCommand =
new SqlCommand("select * from Flights", conn);
// "выбрать * из Рейсов" flightsAdapter › Fill(d, "Flights");
// Заполнить (d, "Рейсы");
planetypeAdapter › SelectCommand =
new SqlCommand("select * from PlaneType", conn);
// выбрать planetypeAdapter › Fill(d, "PlaneType"); // Заполнить
customersAdapter › SelectCommand =
new SqlCommand("select * from Customers", conn);
// "выбрать * из Клиентов " customersAdapter › Fill(d, "Customers");
// Заполнить (d, "Клиенты");
reservationsAdapter › SelectCommand =
new SqlCommand("select * from Reservations", conn);
// "выбрать * из Резервирования " reservationsAdapter › Fill(d, "Reservations");
// Заполнить (d, "Резервирование");

Теперь в объекте DataSet (Набор данных) есть данные таблиц Airlines (Авиалинии), PlaneType (Тип Самолета), Flights (Рейсы), Customers (Клиенты) и Reservations (Резервирование). Далее извлечем из данных объекта DataSet (Набор данных) схему XML. Затем извлечем сами данные и запишем их в формате XML.

d › WriteXmlSchema("Airlines.xsd");
d › WriteXml("Airlines.xml");

Приведенные операторы создают два файла: Airlines.xsd и Airlines.xml. Ниже вы видите некоторые данные, записанные в Airlines .xml. Главным элементом является AirlineBroker; именно так назывался объект DataSet (Набор данных). На один уровень ниже находятся элементы, соответствующие разным таблицам объекта DataSet (Набор данных): Airlines (Авиалинии), PlaneType (Тип самолета), Flights (Рейсы) и Customers (Клиенты). О забронированных местах информации в базе данных не было. В получившемся документе каждой строке исходных таблиц соответствует одна запись. Элементы этих записей соответствуют полям исходных таблиц.

<?xml version="l.О" standalone="yes"?> <AirlineBroker> <Airlines>
<Name>America West</Name>
<Abbreviation>AW</Abbreviation>
<WebSite>www.americawest.com</WebSite>
<ReservationNumber>555-555-1212</ReservationNumber> </Airlines> <Airlines>
<Name>Delta</Name>
<Abbreviation>DL</Abbreviation>
<WebSite>www.delta.com</WebSite>
<ReservationNumber>800-456-7890</ReservationNumber>
</Airlines>
<Flights>
<Airline>DIX/Airlj.n£>
<FlightNurrber>98^</FlightNumber>
<StartCity>Atlanta</StartCity>
<EndCity>New Orleans</EndCity>
<Departure>2001-10-05T20:15:00.0000000-04:00 </Departure>
<Amval>2001-10-05T22: 30: 00. 0000000-04: 00</Amval>
<PlaneType>737</?ianeType>
<FirstCost>1300</FirstCost>
<BusinessCost>0</BusinessCost>
<EconoiryCost>450</EconomyCost> </Flights>
<PlaneType>
<PlaneType> 737 </PlaneType>
<FirstClass>10</FirstClass>
<BusinessClass>0</BusinessClass>
<EconomyClass>200</EconomyClass> </PlaneType ›
<Customers>
<LastName>Adams</LastName> <FirstName>John</FirstName>
<EmailAddress>adams@presidents.org</EmailAddress>
<CustomerId>1</CustomerId> </Custorrers> </AirlineBroker>
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.