Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 252

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 246 247 248 249 250 251 < 252 > 253 254 255 256 257 258 .. 404 >> Следующая


Рассмотрим таблицы Customers и orders. Поскольку каждый клиент может разместить сразу несколько заказов, то возникает вопрос, каким образом можно просмотреть все заказы, размещенные данным клиентом? Каждая строка таблицы orders содержит поле CustomeriD клиента, разместившего данный заказ, поэтому достаточно найти в этой таблице все строки, значение поля которых CustomeriD совпадает со значением поля CustomeriD данного клиента, хранящегося в таблице Customers:

Таблица Customers
Название компании Идентификатор клиента
Wolski Zajazd WOLZLA
Zachary Zithers ZACZI

Таблица Order*
Идентификатор клиента Идентификатор заказа
WOLZA 10374
HOLZA 10611
W0L2JI ' 10792
WOLZA 10870

Совпадающие значения поля CustomeriD в двух таблицах определяют отношение один-ко-многим между таблицами customers и Orders, Есть возможность воспользоваться этим отношением в рамках ADO.NET, создав объект DataRelation, который будет представлять это отношение.

Поиск по отношениям

Чтобы воспользоваться отношениями, необходимо научиться переходить от строки в одной из таблиц к привязанным строкам в другой таблице. Этот процесс называется поиском по отношениям. Очень часто такой поиск заключается в переходе от родительской строки в одной таблице к привязанным дочерним строкам в другой. На диаграмме, приведенной выше, строка в таблице customers может рассматриваться как родительская, а все привязанные к ней строки в таблице^ orders могут считаться дочерними, Поиск может также происходить и в обратном направлении. Мы вернемся к этому понятию позже, когда подготовимся к тому, чтобы использовать его в своей программе. Сначала необходимо настроить нашу программу.

Практикум: пример использования объекта DataRelation

Ниже приводится полный листинг программы (DataRelationExampie); после того как мы познакомимся со всей программой целиком, мы перейдем к обсуждению отдельных строк этой программы:

using System;

using System.Data,-

using Systen.Data.SqlClient;

class DataAddFindExample

I

// Использование пространства имен ADO.NET It Использование провайдера данных OLE DB . NET
542

Глава 19

public static void MainO '

{

// Задание строки соединения специ но для SQL Server SqlConrection thisConnection = new SqlC meet ion I

9'Data Source* (local); Integrated Sscurity=SSPI% * +

'Initial Catalog*=northwind');

// Установка соединения thisConnection.Open(J;

II Создание объекта DataAdapter для внесения It изменений и (ыполнения других операций SqlDataAdapter thisAdapter = new SqlDataAdapter(

•SELBCT CustomeriD, CompanyName FHOH Customers*, thisConnection);

// Создание объекта ConmtandBui lder для формирования SQL-команд .

SqlCorraiandBuilder thiaBuilder = new SQlCommandBuilder (thisAdapter) ;

// Создание объекта DataSet, предназначенного для ft хранения связанных таблиц, строк и столбцов DataSet thisDataSet - new DataSet I);

// Задание объектов DataAdapter для каждой из таблиц и их наполнение SqlDataAdapter cuatAdapter = new SqlDataAdapter!

•SELECT * FROM Customers', thisConnection);

SqlDataAdapter order Adapter ¦ new SqlDataAdapter (

'SELECT * FROM Orders', thisConnection)i custAdapter.FilHthisDataSet, 'Customers') г order Adapter.Fill(thisDataSet, 'Orders');

// Задание объекту DataRelation отноиения между клиентами и заказами DataRelation custOrderRel = thisDataSet.Relatione.Addt'CustOrders', thiaDataSet.Tables!'Customers'].Columns['CustomeriD'], thisDataSet.Tables['Orders'].Columns['CustomeriD']);

II Вывод всех клиентов и идентификаторов их эахазов

foreach (DataRow custRow in thisDataSet .Tables [ 'Customers'] .Rows}

(

Console.WriteLinef'Customer ID: * * cuetRow['CustomeriD'] +

' Name: ' + custRowt'CompanyName'])j foreach (DataRow orderRow in custRow.GetChildHowe (cuetOrderRel))

{

Console.NriteLine(' Order ID: ¦ + orderfiow['OrderID']);

)

)

thisConnection.Close)>; *

)

1

Как это работает

До создания объекта DataRelation необходимо создать объект DataSet и привязать к нему те таблицы нз базы данных, которые мы собираемся использооать, как показано ниже:

DataSet thisDataSet - new DataSet О ;

SqlDataAdapter custAdapter - new SqlDataAdapter(

'SELECT " FROM Customers', thisConnection);

SqlDataAdapter orderAdapter - new SqlDataAdapter(

•SELECT * FROM Orders', thisConnection); cuatAdapter .Fill (thisDataSet, 'Customers') ,-orderAdapter.Fill(thisDataSet, 'Orders');
Доступ к данным посредством ADO.NET

543

Мы создаем объекты DataAdapter для каждой таблицы из тех, к которым мы собираемся обращаться. Затем наполняем объект DataSet данными из столбцов, с которыми мы планируем работать; п данном конкретном случае нам не приходится беспокоиться об эффективности, поэтому мы используем все существующие столбцы ('SELECT * FROM <таблица>).

Создание объекта DataRelation

Затем МЫ создаем объект DataRelation И ПрИВЯЗЫВаеМ его К объекту DataSet:

DataRelation custOrderRel = thisDataSet.Relations.Add("CustOrders', thisDataSet.Tables('Customers'].Columns['CustomeriD'], thisDataSet.Tables['Orders'].Columns I'CustomeriD*]);
Предыдущая << 1 .. 246 247 248 249 250 251 < 252 > 253 254 255 256 257 258 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.