Операции над данными с иерархической структурой. Разработка распределенных приложений в .NET

ОГЛАВЛЕНИЕ

Эта статья демонстрирует методику чтения и записи иерархических наборов строк в источнике данных. В примерах кода, приведенных в этой статье, для соединения с базой данных Microsoft SQL Server или Microsoft Desktop Engine (MSDE) используется управляемый провайдер SQL (SQL managed provider). Для соединения с другими OLEDB-совместимыми источниками данных следует применять управляемый провайдер ADO (ADO managed provider).

Для доступа к иерархическим строкам, возвращаемым источником данных, в ADO.NET используются объекты DataReader и DataSet. Объект DataReader обеспечивает простой и быстрый доступ к данным только для чтения. С помощью этого объекта можно обращаться либо к иерархическим строкам данных, полученным в результате выполнения нескольких операторов SELECT, либо к XML-данным, возвращаемым SQL Server 2000. Объект DataReader позволяет читать данные только в направлении вперед (forward-only) и остается соединенным с базой данных, пока приложение читает данные.

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

Кроме того, SQL Server .NET Data Provider позволяет получить XML-поток напрямую от SQL Server 2000. Для этого предоставляется специальная API-функция, ExecuteXmlReader, доступная через объект SQLCommand. Метод ExecuteXmlReader выполняет SQL-запрос применительно к SQL-соединению и на основе XML, возвращенного запросом, создает объект XmlReader. ExecuteXmlReader используется только в выражениях, результатом которых являются XML-данные, и эффективен в запросах, где в выражениях с SELECT присутствует блок FOR XML.