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

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 295 296 297 298 299 300 < 301 > 302 303 304 305 306 307 .. 404 >> Следующая


Как стало известно из главы 19, объекты DataSet, DataTabie, DataRow И DataAdapter используются для осуществления доступа к данным в ADO.NET, Представляется важным использовать эти объекты в соответствии со структурой, на которой основывается база данных, Если в БД со временем вносятся какие-либо изменения, то нужны гарантии того, что эти изменения, например, включение новых столбцов, будут отражены в классах, ответственных за организацию доступа к этой базе данных.

В данном пример мы создадим подклассы класса DataRow, предназначенные специально для хранения данных из конкретной таблицы базы данных. Когда основополагающая схема базы данных изменяется не слишком часто, такой подход позволяет обеспечить весьма эффективный способ организации доступа к БД Если же схема базы данных изменяется достаточно часто или если вы позволяете пользователям самостоятельно вносить изменения в структуру базы данных, то наиболее правильным подходом будет динамическое создание таблиц данных посредством

запроса в соответствующей базе данных информации о схеме и построение таблиц данных по ходу работы.

На диаграмме (см. рис, слева) проиллюстрированы отношения межлу классами ADO.NET и лежащей в их основе таблицей базы данных.

Класс DataSet состоит нз одного или нескольких объектов DataTabie, каждый из которых обладает объектами DataHow,

DataSet

DataTbbte

DataRow

AUTHOR
Column Nanw I OataTyp* a
AUTHOR JO bigW
NAME verchar
DESCRIPTION verchar
H№E_DATE datetime
J

DataAdapter
Атрибуты_____________________________________________________________________________________643

которые соответствуют отдельной строке нз таблицы БД. Класс DataAdapter используется для извлечения данных нз базы данных н переноса этих данных в объект DataTable, а также для запнсн данных нз объекта DataTable обратно в базу данных.

Мы определим базовый объект класса DataTable, который будет служить универсальным контейнером объектов DataRow. Объекту же DataRow, однако, необходимо обеспечить корректный с точки зрения типов доступ к столбцам базы данных, поэтому разобьем его на подклассы. Отношения между этим объектом и лежащей в его основе таблицей, изображены на рисунке слева.

Основное внимание здесь будет уделено таблицам Books и Authors. Данный пример состоит только из этих двух таблиц, которые будут демонстрироваться на протяжении нескольких следующих страниц. Хотя данный пример разработан для работы с SQL Server, вы можете внести в него изменения, которые позволят вам работать с Oracle или любой другой базой данных. •

Класс AuthorRow является производным от класса DataRow и включает в себя свойства всех столбцов лежащей в его основе таблицы Author. К классу DataBow был добавлен атрибут DatabaseTabie, и теперь для каждого свойства, относящегося к конкретному столбцу в данной таблице, существует свой атрибут DatabaeeCoiumn. Некоторые параметры этих атрибутов были удалены, чтобы изображение могло уместиться на экране. Со всеми подробностями мы познакомимся в последующих разделах.

Атрибут DatabaseTabie

Первый атрибут, который будет использоваться в данном примере, предназначается для передачи информации классу — в данном случае DataRow — об имени таблицы базы данных, в которой будет сохраняться объект DataBow. Код данного примера может быть найден в директории Chapter22/0atabaseAttributes:

// Извлечение из файла DatabejieAttributeB.es

/// <дшгтагу> '

1(1 Атрибут, который кет ольэуется а данном классе для определения /// таблицы базы денных, с которой будет вестись работа /// -с/summary» .

(AttributeUsage (AttributeTargets.Class , Inherited * false , .

Aiiovaiultiple“falee) ] ’

public claee DatabaeeTableAttribute : Attribute -

t " - '

/// <BUfflnary> .

/// Создание атрибута /// </вшппаху>

/// <param name”"tableN«me">Название таблицы базы данных</рвга1В> public OatabaseTableAttribute (string tableName)

(

ТаЫеНаше = tableName; ,

)
644

Глава 22

Н! <ешпшдгу>

III Возвращает название таблицы базы денных

III </вил*пдгу>

public readonly string TableName;

Данный атрибут состоит нз конструктора, которому передается имя таблицы D виде строки, и обладает модификаторами Inherited=false И AllowMultiple=false, Маловероятно, что вы пожелаете, чтобы этот атрибут наследовался какими-либо подклассами, а множественное использование атрибутов запрещено по той простой причине, что данный класс ссылается только одну таблицу.

Внутри класса атрибута название таблицы хранится в виде поля, а не в ввде свойства. Это вопрос личного выбора. В данном случае не предусмотрено никакого метода, позволяющего изменять значение поля, в котором хранится название таблицы, поэтому наиболее подходящим является поле, доступное в режиме “только чтение”. Если вам больше нравится использовать свойства, то вы можете внести в исходный код соответствующие изменения.

Атрибут DatabaseColumn

Данный атрибут предназначен для использования с общими свойствами класса DataRow, он применяется, когда нужно определить названия столбца, к которому данное свойство будет привязано, а также, может ли в данном столбце хранится значение null:
Предыдущая << 1 .. 295 296 297 298 299 300 < 301 > 302 303 304 305 306 307 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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