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>