
- •Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
- •Классы потоков. Класс Stream. Классы байтовых потоков. Классы символьных потоков. Классы двоичных потоков.
- •Класс FileStream и файловый ввод-вывод на побайтовой основе. Открытие и закрытие файла. Запись данных в файл. Считывание байтов из объекта класса FileStream.
- •Файловый ввод-вывод с ориентацией на символы. Использование класса StreamWriter. Использование класса StreamReader.
- •Считывание и запись двоичных данных. Класс BinaryWriter. Класс BinaryReader.
- •6. Навигация по файловой системе: классы для работы с файловой системой.
- •7. Получение сведений о файле; копирование файлов; перечисление файлов в папке; изменение расширения файлов.
- •5.3. Изменение расширения файлов
- •8. Основы организации потоков. Потоки и многозадачность. Пространство имен System.Threading. Класс Thread. Создание потока.
- •9. Использование нескольких потоков. Планирование потоков, приоритеты потоков.
- •10. Проблемы одновременности и синхронизации потоков. Общий доступ к данным из разных потоков, предотвращение коллизий.
- •11. Синхронизация доступа к общим данным с помощью блокировок. Управление временем существования потоков.
- •12. Краткий обзор ado.Net. Три стороны технологии ado.Net. Пространство имен System.Data.
- •13. Поставщики данных ado.Net. Поведение объектов подключения.
- •14. Объектная модель ado.Net
- •16. Создание соединения с источником данных. Члены типа dbConnection. Обработка исключений при работе с ms sql
- •Конструкторы
- •Свойства
- •События
- •17. Работа с бд с пом. Sql-запросов. Класс SqlCommand. Объект Command. Создание и инициализация. Командная строка sql-запроса CommandText.
- •Конструкторы
- •Свойства
- •18. Выборка, добавление, удаление и обновление данных с помощью sql-запросов на подсоединенном уровне.
- •19. Вывод информации с использованием объекта чтения данных: создание SqlDataReader; чтение данных из DataReader; чтение полей из текущей записи; закрытие DataReader.
- •20. Организация хранения данных. Объект DataSet
- •21. Таблицы и поля: объекты DataTable и DataColumn
- •22. Строки: объект DataRow
- •23. Связи между таблицами: объект DataRelation
- •24. Создание подключения к базе данных. Управляемые провайдеры
- •25. Объект DataAdapter. Класс SqlDataAdapter
- •Конструкторы:
- •Свойства
- •Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
20. Организация хранения данных. Объект DataSet
Объект 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: