Адаптер, который был автоматически создан в нашем проекте, по умолчанию настроен на перенос из исходной базы данных в DataSet всей таблицы целиком. Мы можем изменить эту ситуацию, заставив его переносить из базы данных в DataSet не всю таблицу, а только часть ее, согласно созданному нами оператору SELECT. Это и будет решением задачи на выборку из базы данных. Решать ее можно вручную, в режиме проектирования. Можно и программным способом, в режиме работы, то есть не останавливая проекта для создания нового запроса на выборку. В этом подразделе мы рассмотрим создание запроса на выборку в режиме проектирования.
Создадим еще раз проект из 24.5.1. Создавать его будем в точности так же, как и тогда, но с одним отличием. Начните, как и раньше, соединив среду VS с базой данных «Контакт» при помощи Server Explorer и перетащив мышкой значок таблицы «Книги» из окна Server Explorer на форму вашего проекта, вследствие чего под формой появятся значки OleDbConnection1 и OleDbDataAdapter1.
Дальше начинаются отличия. Мы будем адаптер настраивать. Щелкните правой клавишей мыши по значку адаптера под формой и в контекстном меню выберите Configure Data Adapter. Вы увидите окно мастера настройки адаптера (Рис. 24.29).

Рис. 24.29
Нажмите Next в этом окне и в следующих двух окнах тоже, пока не появится окно создания оператора SQL (Рис. 24.30).

Рис. 24.30
В белом поле мы видим оператор SELECT, которым будет руководствоваться адаптер, выбирая данные из таблицы. Так вот кто виноват в том, что порядок полей был перепутан! Вручную подредактируйте этот оператор, чтобы порядок полей был удобным для вас:
SELECT Код, Avtor, Nazvanie, Data, Kol_str FROM Книги
Вы можете выкинуть некоторые поля, но не выкидывайте ключевое поле.
Нажмите Next, а в следующем окне – Finish. Адаптер настроен. Дальше продолжайте, как раньше: создавайте DataSet и DataGrid, пока проект с двумя кнопками не будет создан и запущен.
Обратите внимание, что SQL-оператор записан в одну строку, а не в несколько, как на Рис. 24.19. Это допустимо.
Вы уже догадались, что в белом поле вы можете написать какой угодно оператор SELECT, после чего будете наблюдать в сетке DataGrid нужную вам выборку. Для этого достаточно снова запустить мастер настройки адаптера и переписать оператор.
В процессе создания запроса на выборку вы можете нажать кнопку Query Builder (Рис. 24.19), после чего увидите очень удобное и привычное вам окно (Рис. 24.31), которое поможет вам сконструировать запрос, не затрудняясь написанием SQL-оператора.

Рис. 24.31
Задача создания выборки решена. Однако, если вы в процессе работы с приложением выполняете несколько выборок с разными условиями выбора, вам вряд ли захочется каждый раз прерывать работу проекта для того, чтобы в режиме проектирования заново настроить адаптер. К тому же, если вы создаете независимое приложение Windows, то оно обязано работать без запуска среды VS, а значит режим проектирования в этом случае просто недоступен.
Создадим проект, который выглядит так, как на Рис. 24.32.

Рис. 24.32
Сверху мы видим привычные нам две кнопки и таблицу, целиком загруженную из базы данных в сетку DataGrid1 при помощи верхней кнопки. В этой сетке мы вручную изменяем данные, удаляем и добавляем строки и сохраняем эти изменения в исходной базе при помощи второй кнопки.
Ниже мы видим кнопку, текстовое поле и еще одну сетку – DataGrid2. В текстовом поле мы пишем SQL-запрос на выборку, после чего нажимаем кнопку и в сетке DataGrid2 наблюдаем результаты запроса.
Начнем создавать проект. Верхняя часть его создается абсолютно так же, как в 24.5.1, но не забудьте переставить поля в адаптере и задать ширину и названия столбцов сетки.
Проверив в работе верхнюю часть проекта, приступим к созданию нижней, поместив на форму кнопку, текстовое поле и еще одну сетку. А теперь еще раз перетащим мышкой значок таблицы «Книги» из окна Server Explorer на форму вашего проекта. Вы увидите, что в ваш проект добавился еще один значок адаптера – OleDbDataAdapter2. Таким образом, данные из одной таблицы можно перекачивать в проект несколькими адаптерами, настроив каждый по-своему. Но нам нет нужды как-то его особенно настраивать. Задайте ему тот же порядок полей, что и у адаптера OleDbDataAdapter1.
А теперь пора для нового адаптера создавать DataSet. Щелкните правой клавишей мыши по форме и в контекстном меню выберите Generate Dataset. Вы увидите диалоговое окно. Настройте его, как показано на Рис. 24.33.

Рис. 24.33
Как видите, мы выбрали создание нового объекта DataSet2, включающего в себя таблицу «Книги», поставляемую адаптером OleDbDataAdapter2 (но не адаптером OleDbDataAdapter1).
|
Оператор |
Смысл |
|
SELECT * FROM Книги |
На экран выводится вся таблица. Звездочку пишут для сокращения, чтобы не перечислять все поля. |
|
SELECT TOP 3 * FROM Книги ORDER BY Kol_str DESC |
На экран выводятся 3 самые толстые книжки, выпущенные издательством. Выражение ORDER BY Kol_str DESC сортирует записи по убыванию числа страниц, а выражение TOP 3 показывает на экране только верхние 3 записи из отсортированных. |
|
SELECT * FROM Книги WHERE Kol_str BETWEEN 100 AND 200 |
На экран выводятся книжки с числом страниц МЕЖДУ 100 И 200. |