- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен
Шрифт:
Интервал:
Закладка:
Свойство ExtendedProperties обеспечивает доступ к объекту Property-Collection, который позволяет ассоциировать с DataSet любую дополнительную информацию, используя пары имен и значений. Эта информация может быть практически любой, и даже вообще не иметь никакого отношений к данным. Например, можно связать с DataSet название вашей компании, которое в этом случае может выступать в роли включенных в память метаданных. Другими примерами таких расширенных свойств могут быть штамп даты/времени, шифрованный пароль, который необходимо будет указать для доступа к содержимому DataSet, число, задающее частоту обновления данных, и т.д.
Замечание. Класс DataTable также поддерживает расширение свойств с помощью свойства ExtendedProperties.
Члены DataSet
Перед погружением в многочисленные детали программирования давайте рассмотрим набор базовых членов DataSet. Кроме свойств Tables, Relations и ExtendedProperties, в табл. 22.9 описаны некоторые другие интересные свойства.
Таблица 22.9. Свойства DataSet
Свойство Описание CaseSensitive Индикатор чувствительности к регистру cимволов при сравнении строк в объектах DataTable DataSetName Представляет понятное имя данного объекта DataSet. Обычно это значение устанавливается c помощью параметров конструктора EnforceConstraints Получает или устанавливает значение, являющееся индикатором необходимости применения заданных ограничений при любой операции обновления HasErros Получает значение, являющееся индикатором наличия ошибок в любой из строк объектов DataTable для объекта DataSet RemotingFormat Новое свойство .NET 2.0, позволяющее указать, как должна выполняться сериализация DataSet (в двоичном или XML-формате) для слоя удаленного взаимодействия .NETМетоды DataSet воспроизводят некоторые функциональные возможности, обеспечиваемые вышеупомянутыми свойствами. В дополнение к взаимодействию с потоками XML, объект DataSet предлагает методы, позволяющие копировать/клонировать содержимое DataSet, а также устанавливать начальные и конечные точки пакетных обновлений. В табл. 22.10 даются описания некоторых из таких методов.
Таблица 22.10. Методы DataSet
Методы Описание AcceptChanges() Фиксирует все изменения, сделанные в данном объекте DataSet с момента его загрузки или последнего вызова AcceptChanges() Clear() Выполняет полную очистку данных DataSet путем удаления всех строк в каждом объекте DataTable Clone() Клонирует структуру DataSet, включая все объекты DataTable, а также все отношения и ограничения Copy() Копирует и структуру, и данные для имеющегося объекта DataSet GetChanges() Возвращает копию DataSet, содержащую все изменения, сделанные со времени последней загрузки или последнего вызова AcceptChanges() GetChildRelations() Возвращает коллекцию дочерних связей для указанной таблицы GetParentRelations() Возвращает коллекцию родительских связей для указанной таблицы HasChanges() Перегруженный метод, который возвращает значение, являющееся индикатором наличия модификаций у DataSet, учитывая новые, удаленные или измененные строки Merge() Перегруженный метод, который выполняет слияние данного объекта DataSet с указанным объектом DataSet ReadXml() ReadXmlSchema() Позволяют считывать XML-данные из действительного потока (файлового, размещенного в памяти или сетевого) в DataSet RejectChanges() Выполняет откат всех изменений, сделанных в DataSet с момента его создания или последнего вызова DataSet.AcceptChanges() WriteXml() WriteXmlSchema() Позволяют записать содержимое DataSet в действительный потокТеперь вы лучше понимаете роль DataSet (и имеете некоторое представление о том, что можно делать с этим объектом), и мы можем приступить к созданию нового консольного приложения под названием SimpleDataSet. В его методе Main() определяется новый объект DataSet, содержащий два расширенных свойства, представляющих название вашей компании и штамп времени (не забудьте указать using для System.Data).
class Program {
static void Main(string[] args) {
Console.WriteLine ("***** Забавы с DataSet *****n");
// Создание объекта DataSet.
DataSet carsInventoryDS = new DataSet("Inventory из Car");
carsInventoryDS.ExtendedProperties["TimeStamp"] = DateTime.Now;
carsInventoryDS.ExtendedProperties["Company"] = "Intertech Training";
}
}
Объект DataSet без объектов DataTable чем-то напоминает рабочую неделю без выходных. Поэтому следующей нашей задачей будет рассмотрение внутренней структуры DataTable, начиная с типа DataColumn.
Работа с DataColumn
Тип DataColumn представляет отдельный столбец в пределах DataTable. Вообще говоря, набор всех типов DataColumn в границах данного типа DataTable представляет собой структуру таблицы. Например, чтобы представить таблицу Inventory базы данных Cars, вы должны создать четыре типа DataColumn, по одному для каждого столбца этой таблицы (CarID, Make, Color и PetName). После создания объектов DataColumn они добавляются в коллекцию столбцов типа DataTable (с помощью свойства Columns).
Имея определенную подготовку в области теории реляционных баз данных, вы должны знать, что столбцу в таблице данных можно назначить набор ограничений (например, использовать столбец в качестве первичного ключа, задать значение по умолчанию, потребовать, чтобы информация в столбце была доступна только для чтения и т.д.). Также каждый столбец в таблице должен соответствовать заданному для него типу данных. Например, структура таблицы Inventory требует, чтобы значения столбца CarID были целыми числами, а значения Make, Color и PetName – наборами символов. Класс DataColumn имеет множество свойств, которые позволяют выполнить соответствующие настройки. Описания основных свойств этого типа приведены в табл. 22.11.
Таблица 22.11. Свойства DataColumn
Свойства Описание AllowDBNull Индикатор того, что строка в этом столбце может содержать значение null. Значением по умолчанию является true AutoIncrement AutoInсrementSeed AutoIncrementStep Используются для настройки автоприращения для данного столбца, когда нужно гарантировать уникальность значений в данном объекте DataColumn (например, для первичного ключа). По умолчанию в DataColumn автоприращение не выполняется Caption Читает или устанавливает текст заголовка, который должен отображаться для данного столбца (например, текст, который увидит конечный пользователь, в DataGridView) Определяет представление DataColumn при сохранении DataSet в виде XML-документа с помощью метода DataSet.WriteXml() ColumnName Читает или устанавливает имя столбца в коллекции Columns (т.е. его представление в DataTable). Если не установить ColumnName явно, значением по умолчанию будет Column с номером столбца (т.е. Column1, Column2, Column3 и т.д.) DataType Определяет тип данных, хранимых в столбце (логический, строковый, числовой с плавающей точкой и т.д.) DefaultValue Читает или устанавливает значение, которое должно приписываться по умолчанию для данного столбца при вставке новых строк. Это значение используется тогда, когда не указано иное Expression Читает или устанавливает выражение, используемое для фильтрации строк, вычисления значений столбца или создания агрегированных столбцов Ordinal Возвращает числовую позицию столбца в коллекции Columns, поддерживаемой объектом DataTable ReadOnly Индикатор запрета изменения содержимого столбца после добавления строки в таблицу. Значением по умолчанию является false Table Возвращает объект DataTable, содержащий данный объект DataColumn Unique Индикатор требования уникальности значений в данном столбце. Если столбцу назначается ограничение первичного ключа, свойству Unique должно быть назначено значение trueСоздание DataColumn