Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Организация хранения данных. Объект DataSet

Читайте также:
  1. I.2. Организация обучения детей с нарушениями речи
  2. II. ОРГАНИЗАЦИЯ ДЕЯТЕЛЬНОСТИ КОРРЕКЦИОННОГО УЧРЕЖДЕНИЯ
  3. II. Организация деятельности психолога
  4. II. ОРГАНИЗАЦИЯ И ФУНКЦИОНИРОВАНИЕ КЛАССОВ КОРРЕКЦИОННО-РАЗВИВАЮЩЕГО ОБУЧЕНИЯ
  5. II. Правила идентификации объектов технического регулирования
  6. III. ОРГАНИЗАЦИЯ КОРРЕКЦИОННО-РАЗВИВАЮЩЕГО ОБРАЗОВАТЕЛЬНОГО ПРОЦЕССА
  7. III. Требования к объектам технического регулирования
  8. PR-текст как объект научного изучения 1 страница
  9. PR-текст как объект научного изучения 2 страница
  10. PR-текст как объект научного изучения 3 страница

Объект DataSet явл представлением реляцион данных, находящимся в памяти. Объект DataSet — это создаваемый в оператив памяти набор таблиц (объектов DataTablе), связанных м-ду собой отношениями и снабженными средствами проверки целостности данных (для них в DataSet предусмотрены свои объекты).

DataSet – зто класс, содержащий внутри себя три внутренних строго типизированных коллекции:

Ч-з св-во Tables объекта DataSet можно получить доступ к отдельн объектам DataTable, к-ые хранятся в колл DataTableCollection. Ч-з др св-воRelations, можно получить доступ к объектам DataRelation, из колл DataRelationCollection. Поскольку DataSet — это фактически представление БД, к-ое помещается в операт память клиента (и с к-ой можно работать при разорванном соедин), то в этой модели объекты DataRelation представляют отношения м-ду таблицами БД.

Напр, предположим, в одной табл сущ внешний ключ, ссылающийся на первич ключ в др таблице. Это отношение представлено объектом DataRelation (и его можно добавить в DataSet при пом св-ва DataSet.Relations). После этого мы можем использовать это отношение при выполнении запросов к таблицам.

Св-во ExtendedProperties обеспечивает доступ к объектам, хранящимся в коллекции PropertyCollection. Осн назначение всей этой конструкции со св-вом ExtendedProperties и коллекцией PropertyCollection – обеспечить возможность ассоциировать доп инф-ю (в виде пар имя-значение) с объектом DataSet. В принципе этой доп инф-ей может быть все, что угодно. Напр, можно самостоят определить, что у нашего объекта DataSet будет св-во Company Name, а в кач-ве значения этого св-ва указать имя компании. Выглядеть это будет так. Создаем объект DataSet и добавляем для него некотор доп информацию (метаданные):

DataSet ds =new DataSet('MyDataSet");

ds.ExtendedPropertles.Add("CompanyName", "InterTech_Inc"):

// Выводим информацию о только что созданных метаданных:

Console.WriteLine(ds.ExtendedProperties["CompanyName"].ToString());

Можно использовать расширенные св-ва для хранения самой разной инф-и — напр, о внутреннем пароле для доступа к данным, об интервале синхронизации данных и т. п. Кроме того, расширенные св-ва (то есть свойство ExtendedProperties) предусмотрены не только для DataSet, но и для DataTable.

Рассмотрим наиболее важные св-ва DataSet. Эти св-ва обеспечивают доступ к внутр коллекциям DataSet, позволяют представлять данные из DataSet в формате XML и обеспечивают возможность получения инф-и об ошибках:

CaseSensitive – Определяет, будет ли во время операций по сравнению текстовых строк в объектах DataTable учитываться регсстр букв.

DataSetName – позволяет получить или задать имя для данного объекта DataSet. Обычно значение этого св-ва задается как параметр, передаваемый констр-ру.

DefaultViewManager – позволяет определить представление по умолчанию для отображения данных в DataSet.

EnforceConstraints – позвол-т отключить (включить снова) проверку соответствия огратчеюям при выполнении операций обновления данных в DataSet.

HasErrors – позволяет получить значение, определяющее наличие ошибок в DataSet (то есть ошибок в любой строке любой таблицы DataSet)

Relations – позвол-т обратиться к коллекции отношеюй между таблицами DataSet

Tables – позволяет получить доступ к коллекции таблиц DataSet

Многие методы DataSet дублируют возможности, к-ые обеспечив св-вами. Помимо взаимодействия с потоками данных в формате XML, методы DataSet позволяют копировать содержимое DataSet, устанавливать начало и конец пакетных изменений данных в DataSet и т. п. Самые важные методы DataSet:

AcceptChanges() – позволяет сохранить в DataSet все изменения, произведенные с момента последнего вызова этого метода

Clear() – полная очистка DataSet – удаляются все строки из всех таблиц

Clone() – клонирует структуру DataSet, включая структуру таблиц, отношения между таблицами и ограничения

Copy() – копирует DataSet (структуру вместе с данными)

GetChanges() – возвращает копию DataSet, которая содержит все изменения, внесенные в оригинальный DataSet с момента последнего вызова для него метода AcceptChanges().

GetChildRelations() – возвращает коллекцию подчиненных отношений до указанной таблицы.

GetParentRelations() – возвращает коллекцию родительских отношений до указанной таблицы.

HasChanges() – этот перегруж метод позволяет получить инф-ию об изменениях, внесенных в DataSet (отдельно по вставленным, удаленн и измененным строкам)

Merge() – этот перегруженный метод позволяет производить слияние разных объектов DataSet.

ReadXml(),ReadXmlSchema() – позволяет считывать данные в формате XML в DataSet из потока (файла, оперативной памяти, сетевого ресурса)

RejectChanges() – отменяет все изменения, внесенные в DataSet с момента его создания или последнего вызова AcceptChanges()

WriteXml(), WriteXmlSchema() – позволяет записать данные в форммате XML из DataSet в поток.

Создание объекта DataSet программным способом:

Console.WriteLine("****************** Работа с объектами DataSet ********");

DataSet MyDS = new DataSet("Turisti of BDTurfirm");

Console.WriteLine("Имя объекта DataSet " + MyDS.DataSetName);

Console.WriteLine("Расширенные свойства объекта DataSet: штамп времени (временная метка), название компании, уникальный идентификатор");

MyDS.ExtendedProperties["TimeStamp"] = DateTime.Now;

MyDS.ExtendedProperties["Compani"] = "Турфирма NNN";

MyDS.ExtendedProperties["DataSetId"] = Guid.NewGuid();

Использование визуального подхода для демонстрации работы объекта DataSet: Чтобы проиллюстр применение DataSet на практике, создадим приложение Windows Forms. В этом прилож будет использ-ся объект DataSet с 6 внутренними табл (объектами DataTable) — Туристы, Инф о туристах, Путевки, Оплаты, Сезоны и Туры. В каждой табл будет свой первич ключ, при этом система первичн и внеш ключей таблиц позволит использ объекты DataRelation для моделирования отнош м-ду таблиц. Общая стр-ра БД, к-ую нужно реализ при пом объекта DataSet:

21. Таблицы и поля: объекты DataTable и DataColumn

Объект DataSet представляет собой буфер для хранения данных из базы, локальную копию взаимосвязанных таблиц. Этот буфер предназначен для хранения структурированной информации, представленной в виде таблиц. В связи с этим первым, самым очевидным вложенным объектом DataSet, является DataTable. Тип DataSet – это контейнер, используемый для любого числа объектов DataTable. Внутри одного объекта DataSet может храниться неск-ко загруженных таблиц из БД, помещенных в соответствующие объекты DataTable.

Всякая таблица состоит из столбцов (называемых также полями или клонками) и строк (записей). Для обращения к ним и для управления столбцами и строками в объекте DataTable предназначены специальные объекты – DataColumn и DataRow.

Изучим объект DataColumn. Он представляет отдельный столбец в пределах DataTable. DataColumn – это блок для создания схемы DataTable. Каждый объект DataColumn имеет свойство DataType, которое определяет тип данных, содержащихся в каждом объекте DataColumn. Например, можно ограничить тип данных до целых, строковых и десятичных чисел. Поскольку данные, содержащиеся в DataTable, обычно переносятся обратно в исходный источник данных, необходимо согласовывать тип данных с источником.

Свойства класса DataColumn:

АllowDBNull – Указывает, может ли данный столбец содержать пустые значения. По умолчанию содержит значение true.

AutoIncrement, AutoIncrementSeed, AutoIncrementStep – Применяются для настройки поведения автоинкремента для данного столбца. Это может оказаться удобным, если нужно обеспечить уникальность значений в этом DataColumn (например, если он содержит первичные ключи). По умолчанию DataColumn не поддерживает автоинкрементное поведение.

Caption – Задает или получает заголовок, к-ый должен отображаться для данного столбца. Это позволяет определить более наглядные варианты для имен столбцов в БД.

ColumnMapping – Определяет представление DataColumn при сохранении DataSet в виде XML-документа с помощью метода DataSet.WriteXml(). Можно указать, что столбец данных должен быть записан как XML-элемент, XML-атрибут, простое текстовое содержимое, либо его следует полностью проигнорировать.

ColumnName – Задает или получает имя столбца из коллекции Columns (т.е. его внутреннее представление в DataTable). Если не занести значение в ColumnName явно, то по умолчанию там находится слово *Column* с числовыми суффиксами по формуле n+1 (т.е. Column1, Column2, Column3 и т.д.)

DataType – определяет тип данных (логический, строковый, с плавающей точкой и т.д.), хранящихся в данном столбце

DefaultValue – Задает или получает значение по умолчанию, заносимое в данный столбец при вставке новых строк

Expression – Задает или получает выражение для фильтрации строк, вычисления значения столбца или создания агрегированного столбца

Ordinal – Задает или получает числовое положение столбца в коллекции Columns, содержащейся вDataTable.

ReadOnly Определяет, предназначен ли данный столбец только для чтения после добавления строки в таблицу. По умолчанию равноfalse.

Table – Получает объектDataTable, содержащий данныйDataColumn

Unique – Задает или получает значение, указывающее, должны ли быть уникальными значения во всех строках данного столбца, или допустимы совпадения. При присвоении столбцу ограничения первичного ключа свойствоUnique должно содержать значениеtrue

Создание объектов DataColumn:

Console.WriteLine("Создание объектов DataColumn, отображающих реальные столбцы таблицы Туристы");

DataColumn cod = new DataColumn("Код туриста", typeof(int));

cod.Caption = "Код туриста";

cod.ReadOnly = true;

cod.AllowDBNull = false;

cod.Unique = true;

DataColumn fam = new DataColumn("Фамилия", typeof(string));

fam.Caption = "Фамилия";

fam.ReadOnly = false;

fam.AllowDBNull = true;

fam.Unique = false;

DataColumn name = new DataColumn("Имя", typeof(string));

name.Caption = "Имя";

name.ReadOnly = false;

name.AllowDBNull = true;

name.Unique = false;

DataColumn ot = new DataColumn("Отчество", typeof(string));

ot.Caption = "Отчество";

//Свойство Caption используется для отображения названия столбца при выводе данных.

cod.AutoIncrement=true;

cod.AutoIncrementSeed = 0;

cod.AutoIncrementStep = 1;

//При добавлении строк в таблицу значение столбца cod увеличится //на 1.Начальное значение столбца 0.

Тип DataColumnобычно не существует автономно, а добавляется в соответствующий объект DataTable:

Console.WriteLine("Создание объекта DataTable и вставка объектов DataColumn в коллекцию столбцов:");

DataTable Turistes = new DataTable("Туристы");

Turistes.Columns.AddRange(new DataColumn[] { cod, fam, name, ot });

Теперь объект DataTable Turistes содержит четыре объекта DataColumn, которые представляют схему находящейся в памяти таблицы Turistes. Пока эта таблица не содержит данных и не входит в коллекцию таблиц, принадлежащих конкретному DataSet. Начнем с заполнения таблицы с помощью объекта DataRow.


 

22. Строки: объект DataRow

Содержимое таблицы (непосредственно данные) задается набором DataRows – это конкр-е мн-во строк таблицы, каждая из к-ых явл объектом-представителем класса DataRow. Его методы и свойства представлены в таблице.

Свойства  
HasErrors Возвращает значение, показывающее, есть ли ошибки в строке  
Item Перегружен. Возвращает или задает данные, сохраненные в указанном столбце. В языке C# это свойство является индексатором класса DataRow  
ItemArray Возвращает или задает все значения для этой строки с помощью массива  
RowError Возвращает или задает пользовательское описание ошибки для строки  
RowState Возвращает текущее состояние строки по отношению к DataRowCollection  
Table Возвращает объект DataTable, содержащий данную строку  
Методы
AcceptChanges Сохраняет все изменения, сделанные с этой строкой со времени последнего вызова AcceptChanges
BeginEdit Начинает операцию редактирования объекта DataRow
CancelEdit Отменяет текущее редактирование строки
ClearErrors Удаляет ошибки в строке, включая RowError и ошибки, установленные SetColumnError
Delete Удаляет DataRow
EndEdit Прекращает редактирование строки
Equals(унаследовано отObject) Перегружен. Определяет, равны ли два экземпляра Object
GetChildRows Перегружен. Возвращает дочерние строки DataRow
GetColumnError Перегружен. Возвращает описание ошибки для столбца
GetColumnsInError Возвращает массив столбцов, имеющих ошибки
GetHashCode(унаследовано от Object) Служит хэш-функцией для конкретного типа, пригоден для использования в алгоритмах хэширования и в структурах данных, например в хэш-таблице
GetParentRow Перегружен. Возвращает родительскую строку DataRow
GetParentRows Перегружен. Возвращает родительские строки DataRow
GetType(унаследовано от Object) Возвращает Type текущего экземпляра
HasVersion Возвращает значение, показывающее, существует ли указанная версия
IsNull Перегружен. Возвращает значение, показывающее, содержит ли нулевое значение указанный столбец
RejectChanges Отменяет все значения, выполненные со строкой после последнего вызова AcceptChanges
SetColumnError Перегружен. Устанавливает описание ошибки для столбца
SetParentRow Перегружен. Устанавливает родительскую строку DataRow
ToString(унаследовано от Object) Возвращает объект типа String, который представляет текущий Object
       

 

Защищенные методы
Finalize(унаследовано от Object) Переопределен. Позволяет объекту Object попытаться освободить ресурсы и выполнить другие завершающие операции перед тем как объект Object будет уничтожен в процессе сборки мусора. В языках C# и C++ для функций финализации используется синтаксис деструктора
MemberwiseClone(унаследовано от Object) Создает неполную копию текущего объекта Object
SetNull Устанавливает значение указанного DataColumn на нулевое

Элементы набора DataRows являются объектами класса DataRow. В этом классе обеспечивается несколько вариантов реализации свойства Item, которые обеспечивают навигацию по множеству записей объекта DataTable и сохранение текущих изменений данных, сделанных за текущий сеанс редактирования базы. Посредством набора Rows реализуется возможность ссылки на любую запись таблицы. К любой записи можно обратиться напрямую, и поэтому не нужны методы позиционирования и перемещения по записям таблицы. По множеству строк позиционирование проводится по целочисленному значению индекса. Выбор записи в строке производится по строковому значению, которое соответствует имени столбца.

Работа с типом DataRow отличается от работы с DataColumn, так как у него нет общедоступного конструктора:

DataRow r=new DataRow(); // Ошибка!

Однако новый DataRow можно получить из конкретного DataTable. Допустим, нужно вставить две строки в таблицу Turistes. Метод DataTable.NewRow() добавляет строку в таблицу, а затем нужно с помощью индексатора типа добавить в каждый столбец данные:

Console.WriteLine("Добавление строк в таблицу Turistes:");

DataRow r = Turistes.NewRow();

Console.WriteLine("Состояние строки " + r.RowState);

r["Код туриста"] = 0;

r["Фамилия"] = "Nareyko";

r["Имя"] = "Nina";

r["Отчество"] = "Nikolaewna";

Turistes.Rows.Add(r);

r = Turistes.NewRow();

r["Код туриста"] = 1;

r["Фамилия"] = "Zenko";

r["Имя"] = "Sergej";

r["Отчество"] = "Iwanowich";

Turistes.Rows.Add(r);

Индексатор класса DataRow позволяет получить доступ к объекту DataColumn как по числовому индексу столбца, так и по его имени.




Дата добавления: 2015-09-10; просмотров: 36 | Поможем написать вашу работу | Нарушение авторских прав

Считывание и запись двоичных данных. Класс BinaryWriter. Класс BinaryReader. | Public enum FileAttributes | Основы организации потоков. Потоки и многозадачность. Пространство имен System.Threading. Класс Thread. Создание потока. | Проблемы одновременности и синхронизации потоков. Общий доступ к данным из разных потоков, предотвращение коллизий. | Краткий обзор ADO.NET. Три стороны технологии ADO.NET. Пространство имен System.Data. | Поставщики данных ADO.NET. Поведение объектов подключения. | Объектная модель ADO.NET | Краткий обзор объектов ADO .NET. | События | Свойства |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.015 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав