Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ADO как базовый объект доступа.doc
Скачиваний:
16
Добавлен:
15.12.2018
Размер:
1.48 Mб
Скачать

1.2. Сравнение ado.Net и ado

Чтобы лучше понять особенности ADO.NET, сравним этот объект с уже известным нам объектом доступа к данным — ADO.

1.2.1. Представление данных в памяти

В ADO в памяти компьютера данные представлены в виде набора записей Recordset. В ADO.NET для этой цели служит набор данных DataSet. Есть достаточно много важных различий между этими объектами. Остановимся на этих различиях более подробно.

Объект Recordset содержит всего одну таблицу. Если требуется поместить в объекте Recordset информацию из нескольких таблиц базы данных, то предварительно необходимо построить объединяющий SQL-запрос, который соберет информацию из нескольких таблиц в одну, и данные этой результирующей таблицы будут помещены в объект Recordset. Часто в результате объединения нескольких таблиц результирующая таблица доступна только для чтения, и через построенный объект Recordset невозможно обновлять информацию в исходной базе данных.

В отличие от вышесказанного, объект DataSet представляет собой коллекцию (одну или множество) таблиц. Таблицы в пределах набора данных DataSet представляют собой самостоятельные объекты — DataTable. Если DataSet заполняется информацией из набора таблиц исходной базы данных, то в нем будет сформировано и множество объектов DataTable. To есть, каждый объект DataTable обычно соответствует единственной таблице исходной базы данных. Таким образом, DataSet как бы имитирует структуру основной базы данных.

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

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

1.2.2. Навигация по данным и курсоры

ADO можно получить доступ к требуемым данным, переместившись на нужную запись объекта Recordset (например, посредством метода MoveNext) и указав номер или имя поля. В ADO.NET представлена коллекция таблиц, а каждая таблица, в свою очередь, состоит из коллекции строк (записей) и столбцов (полей). Получить доступ к требуемой информации можно путем указания номера (имени) таблицы, номера строки, номера (имени) столбца. В объектах DataRelation содержится информация о родительских и дочерних таблицах и имеется набор методов, обеспечивающих возможность получить доступ к записям дочерней таблицы на основании активного ключа в родительской таблице.

Курсор является элементом базы данных, который определяет способ навигации по записям, возможность (или невозможность) корректировки данных, и видимость изменений, которые были сделаны в базе данных другими пользователями. ADO.NET не имеет объекта, подобного курсору, но взамен этого представлены элементы, которые имеют то же функциональное назначение, что и традиционные курсоры в ADO. Например, функциональное назначение одностороннего просмотра данных и доступа только на чтение (forward-only, read-only) обеспечивает объект DataReader.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]