РИС. 8.13. Режим конструктора запросов с диалоговым окном Add Table
1. Откройте окно Solution Explorer и щелкните правой кнопкой мыши на любой папке, за исключением Database References. В контекстном меню выберите команду Add Query (Создать запрос), и на экране отобразится диалоговое окно Add New Item (Создать новый объект), показанное на рис. 8.2.
РИС. 8.14. Запрос на обновление поля WholesalePrice в таблице tblInventory
2. Выберите в области шаблонов Templates шаблон Database Query (Шаблон базы данных), укажите в текстовом поле Name имя нового запроса UpdateWholesale.dtq и щелкните на кнопке Open. (После этого на экране отобразится диалоговое окно Set Database Reference for Query для указания используемой ссылки на базу данных. — Прим. ред.) Далее в режиме конструктора запросов отобразится диалоговое окно Add Table (Включить таблицу), которое показано на рис. 8.13.
3. В диалоговом окне Add Table выберите таблицу tblInventory и щелкните на кнопке Add, а затем на кнопке Close.
4. Далее нужно изменить тип запроса с помощью команды меню Query→Change Туре→Update (Запрос→Изменить тип→Обновление).
5. В панели Diagram (Схема) конструктора запросов установите флажок в поле WholesalePrice, данные в котором предполагается обновить.
6. В панели Grid (Сетка) в столбце NewValue введите формулу: WholesalePrice * (1 + ? /100).
7. Эта формула принимает один параметр, который обозначает, на сколько процентов повышается оптовая цена товаров. При выполнении запроса символ подстановки в виде вопросительного знака будет заменен фактическим значением этого параметра. После выполнения этих действий окно конструктора запросов будет иметь такой вид, как на рис. 8.14.
8. Хотя данный запрос можно запустить сразу же после его создания в режиме конструктора запросов, в данном примере он будет запущен из окна Solution Explorer.
9. Закройте окно конструктора запросов и щелкните на кнопке Yes в ответ на предложение сохранить созданный запрос UpdateWholesale.dtq.
10. Щелкните дважды на таблице tblInventory в окне Server Explorer для отображения всех текущих данных в поле WholesalePrice этой таблицы. Именно эти данные об оптовых ценах на товары будут изменены в результате выполнения запроса UpdateWholesale.dtq.
СОВЕТ
Для сверки исходного и последующего после выполнения запроса состояний можно сделать снимок экрана. Например, можно выделить и скопировать все строки, а затем вставить их в текстовый файл с помощью программы Notepad.
11. Как и при запуске сценария, запрос можно запустить, просто перетаскивая и опуская его на нужную ссылку базы данных. Кроме того, можно щелкнуть правой кнопкой мыши на запросе и выбрать в контекстном меню команду Open.
НА ЗАМЕТКУ
Данное контекстное меню также содержит команды Design и Design которые открывают конструктор запросов по отношению к используемой по умолчанию или указанной ссылке на базу данных.
РИС. 8.15. Обновленные данные в таблице tblInventory после увеличения значений в поле WholesalePrice на 10%
12. Перетащите и опустите запрос UpdateWholesale.dtq на ссылку на базу данных Novelty в окне Solution Explorer.
13. После этого в диалоговом окне Execute Scripts or Queries (Выполнить сценарий или запрос) подтвердите желание выполнить запрос по отношению к выбранной ссылке на базу данных, щелкнув на кнопке Yes.
14. В диалоговом окне Define Query Parameters (Определить параметры запроса) введите значение 10 в столбце Parameter Value (Значение параметра) и щелкните на кнопке OK.
15. После этого на экране появится диалоговое окно с сообщением о результате выполнения запроса и количестве охваченных им записей. Для продолжения работы закройте его, щелкнув на кнопке OK.
16. Повторите действия, описанные в п. 9, для отображения обновленных значений поле WholesalePrice таблицы tblInventory, как показано на рис. 8.15.
Резюме
В этой главе рассмотрены способы работы с проектами баз данных в среде Visual Studio .NET. Этот тип проекта не содержит кода на языке Visual Basic, потому что предназначен для создания, тестирования и запуска сценариев баз данных, запросов и командных файлов. Эти сценарии и команды позволяют создавать новые схемы базы данных, вносить изменения в существующие схемы, а также запрашивать и обновлять существующие данные. Эти эффективные инструменты следует использовать в максимальной степени во время создания и доставки приложения.
Вообще говоря, задачи создания, отладки и усовершенствования сценариев и запросов обычно выполняют аналитики баз данных, но все чаще эти задачи возлагаются на плечи прикладных программистов. Вот почему им необходимо иметь хотя бы базовые представления о способах выполнения таких задач.
Вопросы и ответы
В среде Visual Studio .NET и программе SQL Server Enterprise Manager совпадают многие инструменты. Какие из них предпочтительнее использовать?
Ответ прост: какие хотите. Для выполнения многих операций в среде Visual Studio .NET и программе SQL Server Enterprise Manager предусмотрены совершенно одинаковые инструменты. Однако есть и такие операции, для выполнения которых предусмотрен только один инструмент в одном из этих программных продуктов. Администратор базы данных обычно выполняет все операции с помощью инструментов программы SQL Server Enterprise Manager, а прикладной программист — с помощью инструментов среды Visual Studio .NET. Учтите, однако, что при работе с базой данных другого типа (например, Oracle) вам потребуются совершенно другие инструменты для создания или изменения объектов базы данных. Инструменты среды Visual Studio .NET позволяют просматривать и запрашивать данные в таких базах данных, но не могут изменять их.
ГЛАВА 9
XML И .NET
Вероятно, большинство читателей уже знакомы в той или иной мере с расширяемым языком разметки (extensible Markup Language — XML). По сути, пользователи встречаются с ним уже при установке среды Visual Studio .NET или CLR, даже если и не подозревают об этом. В свое время XML считался панацеей от всех бед, способной решить все проблемы обмена данными, независимо от используемой платформы или аппаратного обеспечения. На начальном этапе развития XML эти необоснованные ожидания породили массу избыточных и совершенно бесполезных затрат при создании приложений с применением XML. Разработчики стали повсюду использовать дескрипторы XML без учета их реальной необходимости для конкретных бизнес-ситуаций или технических причин. Мощь XML заключается в эффективном использовании метаданных и структурированных элементов для хранения данных. XML не является языком программирования, поскольку не содержит никаких директив для выполнения каких-либо действий, а потому обладает полной независимостью от используемой платформы.
Разработчики, имеющие большой опыт работы с HTML, смогут легко понять преимущества надежного и эффективного использования XML. Пространство имен представлено элементом с префиксом xmlns:, оно содержит уникальное имя для контейнера, который предлагает функции и/или данные аналогично имени класса в языке Visual Basic. В среде Visual Basic .NET этот подход упрощается за счет использования расширенного набора классов для синтаксического анализа и манипулирования данными в формате XML. Рассмотрим обычный файл конфигурации web.config. Он имеет формат XML, а не "унаследованный" формат файла конфигурации.ini, хотя доступ к его данным можно осуществить с помощью аналогичных простых методов. Основное отличие заключается в том, что файл web.config обладает большими возможностями для расширения. Доказательством этого отличия является то, что управление файлом web.config осуществляется так же, как и любым другим документом в формате XML, хотя результаты подобных манипуляций могут быть совершенно иными.
Основным преимуществом формата XML (и его аналогов, соответствующих протоколу Simple Object Access Protocol – SOAP) является его нейтральность. Благодаря этому всегда можно создать приложение с расширением логики путем расширения данных, а не создания уникального кода для доступа к централизованно хранящимся данным.
В настоящей главе основное внимание сосредоточено на использовании XML в целях идентификации данных для приложений и пользователей. В ней описываются способы применения XML на платформе.NET в практических ситуациях. Более глубокое описание способов взаимодействия с базами данных и наборами данных DataSet с помощью классов модели ADO.NET приведено в главе 10, "ADO.NET и XML".
В настоящее время описанию XML посвящено много книг и ресурсов. Поэтому вместо подробного рассмотрения этой темы основное внимание в этой главе уделяется вопросам интеграции XML с платформой .NET. Читатели, которые хорошо знакомы с основами XML, могут пропустить обзорные разделы вплоть до раздела с описанием классов XML для платформы .NET.
Обзор XML
Язык XML предназначен только для работы с данными. Точнее говоря, он предназначен для создания набора сведений, или метаданных, которые описывают данные. Рассмотрим приведенный ниже простой фрагмент кода на языке HTML.