Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 268

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 262 263 264 265 266 267 < 268 > 269 270 271 272 273 274 .. 320 >> Следующая

// Теперь производим переход от таблицы Customers в таблицу Orders OataRow[] drsOrder - null;
drsOrder = drCust.GetChi1dRows(ca rsDataSet.ReI atі ons["CustomerOrder"]);
// Получаем иня заказчика
foreachfDataRow г in drsOrder)
strlnfo *- "Order Number: " + r["OrderlD"] + "\n";
Моделируем отношения между при помощи класса 663
Последний этап в нашей программе - это переход от таблицы Orders к родительской таблице Inventory при помощи метода GetParentRowsl). При этом мы получаем информацию из таблицы Inventory для столбцов Make, PetName и Col or:
// Теперь лереходин от таблицы Orders к таблице Inventory
DataRow[] drslnv = drsOrder[OLGetParentRows(car5DataSet.Relations["InventoryOrder"]):
// Пслучаєи Нхюпацио об автомобилях
foreachCDataRow r in drslnv)
i
strlnfo += "Make: " + r["Make"] + "\n"; strlnfo += "Color: " + r["Color"] + "\n": strlnfo += "PetName: " + r["PetName"] + "\n";
I
Приведем еще один пример, посвященный переходам между таблицами программным образом. Код, который приведен ниже, позволяет выводить значения из таблицы Orders при помощи отношения InventoryOrders:
protected void btfiGetChildRe1s_Click (object sender. System.EventArgs e) (
Il Получаем информацию о таблицах, подчиненных по отношению к таблице // Inventory
DataRelationCollection relCol; DataRow[] arrRows: string info - "":
relCol * carsoataSet.Tables["Inventory"].ChildRelations:
info += "URelation is called: " + relCol ГО 1. ReI ationName + "\n\n";
Il А теперь при помощи цикла проходим по всем отношениям и выводим о них
// информацию:
foreach(DataRelation dr in relCol) {
foreach(DataRow г in іnventoryTable.Rows)
{
arrRows - r.GetChildRows(dr):
// Выводим значения каждого столбца в строке
for (int і - D: і < arrRows.tength: і++)
{
foreach(DataColumn de in arrRows[і].Table.Columns) {
info +- "\f + arrRows[i][dc];
mfo +- "\n";
MessageBox.Showdnfo. "Data in Orders Table obtained by child relations");
}
)
Результат работы программы представлен на рис. 13.21.
Как мы смогли убедиться, DataSet предоставляет нам возможность работы с представлением базы данных в оперативной памяти точно так же, как и с обычной базой данных; мы можем производить запросы к таблицам, выполнять вставку, изменение и удаление данных, перемещаться между таблицами при помощи отношений между ними и т. п. Однако мы до сих пор не рассмотрели самое важное — как нам получить объект DataSet из реальной базы данных, хранящейся где-нибудь на сервере баз данных! Перед тем как перейти к рассмотрению этой темы,
J
664 Глава 13 • Доступ к данным при помощи
Data in Orders ! ¦ й ¦.U: <?л і ^?! by child п-'І^п^ Гї*-
Рис. 1&21. Перемещение между таблицами при помощи отношений
Чтение и запись объектов DataSet в формате XML
Одна из главных целей, которая преследовалась при разработке ADO.NET, - это упрощение работы сданными в формате XML. При помощи типа DataSet мы можем представлять наши таблицы (со всеми данными), отношения между ними, ограничения и все остальное в формате XML и записывать их в поток (например, текстовый файл). Если у нас уже создан объект DataSet, то для записи его содержимого в формате XM L достаточно просто вызывать метод Wn t.eXml ():
protected void btnToXML_Click (object sender. System.EventArgs e) I
И Записываем DataSet весь целикон в файл в каталоге арр carsOataSet.WriteXml("cars.xml"):
MessageBox.Showt"Wrote CarDataSet to XML file in app directory"): btnReadXML,Enabled = true:
}
Открыв этот файл в Visual Studio.NET (рис. 13.22), можно убедиться, что весь ¦объект DataSet (то есть вся база данных) записан в формате XML.
-1?I *
<?xml ?>
<CarrjataSet
<xsd: schema iri="CacDataSet" targetNameapnee <X3d:element namu""InvenCory"> ^xsd:complexType> <x3d:all>
<xsd: element riaice="CarID" tnsc <хвйтктитя%, п*ве»"а*5ев* и: <xsd:element name»"Colac" min ocsiiielewent гіал^--','Ре'.-,І."аїж:' к </хза:а11> </xs<3: comp JexTypo
В XML Data
1;
Рис. 13.22. Представление объекта DataSet в формате XML
мы познакомимся с еще одним исключительно важным моментом: как представлять данные из DataSet в формате XML.
Создание примера простой базы данных 665
Создание примера простой базы данных
Теперь, когда мы уже умеем работать с объектом DataSet, нам осталось научиться создавать его при помощи соединений с реальными базами данных.
Оставшаяся часть этой главы будет посвящена подключению к базе данных, которая потребуется нам для наших примеров. База данных включена в примеры настоящей главы и может быть создана в двух вариантах.
Первый вариант — это скрипт SQL, который позволяет создать базу данных на сервере Microsoft SQL Server версии 7.0 и последующих. Для создания базы данных откроем окно утилиты Query Analyzer (поставляемой вместе с SQL Server) и подключимся к своему серверу. Далее откроем в Query Analyzer скрипт и откорректируем его, указав пути к файлам базы данных и журнала транзакций, которые соответствуют конфигурации дисков на нашем компьютере. Части скрипта, которые, возможно, придется корректировать, выделены в приведенном ниже коде полужирным шрифтом:
Предыдущая << 1 .. 262 263 264 265 266 267 < 268 > 269 270 271 272 273 274 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100