Обработка баз данных на Visual Basic®.NET
Шрифт:
Подпрограмма btnNavigateSQL_Click
Сначала объект DataSet с данными связывается с новым объектом XmlDataDocument. Затем создается объект-навигатор XPathNavigator на основе объекта-документа XmlDataDocument. После чего на основе объекта XPathNavigator создается объект-итератор XPathNodeIterator. Далее строка XPATH-запроса передается методу Select для возвращения списка фамилий авторов (т.е. значений поля из Калифорнии (т.е. у которых поле state имеет значение СА). После этого выполняется последовательный обход всех узлов, извлеченных данным запросом, и создается строка с искомым перечнем авторов. Эта строка отображается в диалоговом окне, которое показано на рис. 10.3.
РИС. 10.3. Диалоговое окно с XML-данными, извлеченными из объекта DataSet
Вторая подпрограмма, btnAddRows_Clicks, выполняет другую задачу. Сначала она считывает XML-данные с помощью метода ReadXml из файла Pubs. в набор данных dsPubs, как показано в листинге 10.1. Этот метод автоматически создает таблицу publishers в объекте DataSet. Далее новые данные вставляются с помощью реляционных методов и объектов, например объекта-записи DataRow. Новый объект DataRow включается в схему таблицы publishers, а полям присваиваются указанные значения. После этого новая запись вставляется в таблицу publishers, а результат вставки отображается в сетке DataGrid (рис. 10.4).
РИС. 10.4. Вид сетки DataGrid после считывания данных из XML-файла вставки строки
Резюме
В этой главе демонстрируется тесная взаимосвязь и интеграция способов доступа к данным и XML на платформе .NET Framework. В частности, показано, что объект DataSet обладает возможностями чтения и записи XML-данных и XML-схем. При отсутствии определения XML-схемы объект DataSet способен вывести его на основании анализа структуры данных в считанном XML-документе.
С другой стороны, объект XmlDataDocument образует мост между реляционным и иерархическим миром XML. Доступ к данным внутри объекта XmlDataDocument можно получить либо XML-совместимым способом, либо реляционным. Изменения в одном представлении автоматически реплицируются в другом представлении. Разработчик базы данных может выбрать наиболее удобный способ доступа к данным и манипулирования ими.
Методам и инструментам реляционного и иерархического доступа к данным посвящено множество специализированных книг и учебных пособий. Невозможно в рамках одной главы или даже
Вопросы и ответы
Иногда в документации по платформе.NET, помимо XSD-формата схемы данных, упоминается XDR-формат. Что это такое?
XSD-формат — это стандартный формат определения схемы XML-данных, принятый консорциумом World Wide Web Consortium (W3C), который специализируется на создании Web-ориентированных стандартов (более подробную информацию об этом консорциуме можно найти по адресу: www.w3c.org). Еще до окончания работ по созданию стандарта для XSD-формата компания Microsoft решила создать собственный временный формат XML-Data Reduced (XDR) для определений XML-схем. После завершения работы над стандартом XSD-формата в мае 2001 года Microsoft перешла к полной поддержке XSD-формата. Несмотря на то что на платформе .NET Framework схемы данных сохраняются только в XSD-формате, они могут считываться в обоих форматах для совместимости с прежними унаследованными системами. В наборе инструментальных средств разработчика .NET Framework SDK предусмотрена специальная утилита xsd.exe, которая может (помимо прочего) конвертировать схему данных из формата XDR в формат XSD.
Как конкретно ADO.NET автоматически определяет схему данных после анализа XML-документа?
Алгоритм автоматического определения схемы данных хорошо документирован в справочных материалах Visual Studio .NET. Для ознакомления с ним следует обратиться к разделу Inferring DataSet Relational Structure from XML (Автоматическое определение XML-схемы данных после анализа реляционной структуры объекта DataSet). В нем приводится краткое описание алгоритма, некоторые особенности анализа таблиц, полей и отношений, а также ограничения алгоритма.
В этой главе описаны два способа доступа к данным: реляционный на основе объекта DataSet и иерархический на основе XmlDataDocument. В каких ситуациях следует их применять?
Вообще говоря, не существует единственно верного и универсального способа. Каждый из них следует применять в зависимости от используемых источников данных и поставленной задачи. Платформа .NET Framework позволяет гибко использовать данные из любых источников: реляционных или иерархических. Независимо от источника, данные можно сохранять как реляционные или как иерархические в соответствии с конкретными потребностями. Кроме того, если источник данных и полученные после обработки данные должны иметь формат XML, а вы в недостаточной степени владеете технологиями и инструментами XML, то поставленную задачу все равно можно успешно выполнить с помощью реляционных инструментов на основе объектов DataSet и DataTable.
ГЛАВА 11
Web-формы: приложения на основе ASP.NET для работы с базами данных
До сих пор демонстрировались различные способы работы с базой данных на разных этапах создания приложения и способы использования результатов выполнения приложения (на основе объектов DataSet, DataAdapter и Connection). В этой главе эти способы комбинируются для просмотра информации из базы данных в Web-среде с помощью Web-броузера. В контексте платформы.NET Framework Web-страница, которая применяется для извлечения или вставки данных, называется Web-формой (WebForm). Прежде, при создании приложения с помощью технологии ASP, единственным способом извлечения данных из реляционной базы данных было применение объектов ADODB.Connection и ADODB.Recordset. С появлением платформы .NET модель ADO.NET позволяет использовать не только новые классы и параметры, но и встроенную поддержку для работы с XML-данными так, как если бы они были элементами базы данных. Описание новых способов работы на основе технологии ASP .NET начинается с базовых сведений, а затем приводятся более сложные понятия.