<asp:AccessDataSource> ID="MySourcName" Рунат="сервер" DataFile="MyMDBName.mdb" SelectCommand="ВЫБРАТЬ MyField1, MyField2 ИЗ MyTable"> </asp:AccessDataSource> |
<html> <голова> <title>TIO ch02-1 Отображение данных MDB</title> <голова> <тело> <h3>ch02 TIO 2 Демонстрация подключения к источнику MDB </h3> <тело> </html> |
<%@ язык страницы="VB" %> <html> <head><title>ch02 TIO 2 Отображение данных MDB</title></head> <тело> <h3>ch02 TIO 2 Демонстрация подключения к источнику MDB </h3> <форма runat="сервер"> <asp:accessdatasource id="NorthwindProductsAccDataSource" runat="server" selectcommand="Выбрать * из продуктов" datafile="~/App_Data/Northwind.mdb"> </asp:accessdatasource> <asp:gridview id="NorthwindProductsGridView" runat="server" datasourceid="NorthwindProductsAccDataSource"> </asp:gridview> </form></body></html> |
<asp:accessdatasource id="NorthwindProductsAccDataSource" runat="server" selectcommand="Выбрать * Из [Продажи по категориям] " Datafile="~/App_Data/Northwind.mdb"> </asp:accessdatasource> |
(14) Откройте браузер и просмотрите страницу.
Пример примечания № 2. Подключитесь к MDB и отобразите данные с помощью GridView.
У вас есть два элемента управления на странице. Первый, AccessDataSource, выполняет всю работу по подключению к объектам ADO.NET, которые подключаются к механизму JET, взаимодействующему с файлом MDB. Второй — GridView, который используется для получения данных и преобразования их формата в формат HTML, который можно отобразить на странице. Обратите внимание, что очень важно дать каждому элементу управления осмысленное имя (ID). Затем необходимо убедиться, что элемент управления с привязкой к данным (GridView) использует свое свойство DataSourceID для ссылки на идентификатор AccessDataSource, чтобы использовать AccessDataSource в качестве источника данных.
Отображать данные из запроса не очень сложно; в Access вместо имен таблиц можно использовать имена запросов. Здесь есть две инструкции. Во-первых, если в имени таблицы или запроса есть пробелы, все имя необходимо заключить в квадратные скобки. Во-вторых, запросы, требующие ввода данных пользователем (например, «продажи в данном году» требуют знания какого года), включают в себя методы, выходящие за рамки этой книги.
После выполнения предыдущих шагов вы сможете увидеть данные, полученные из элемента управления AccessDataSource, отображаемые на странице. В последующих главах будет подробно рассмотрен GridView, но в этой главе основное внимание будет по-прежнему уделяться элементам управления источниками данных.
Выбор переменных в операторах
При создании источника данных в VWD мастер попросит вас указать столбцы, которые необходимо отобразить, или создать собственный оператор SQL. В предыдущем разделе «Попробуй это» вы просто выбрали несколько столбцов. Более сложные операторы SQL можно задать несколькими способами:
● Используйте интерактивные диалоговые окна.
● Введите настроенные операторы SQL в мастере AccessDataSource (вызывается удобной задачей «Настройка источника данных» в элементе управления).
● Ввод заявлений в таблицу свойств.
● Вводите операторы непосредственно в разметку представления «Исходный код».
Выбор столбцов в мастере Access DataSource — предпочтительный метод для простых запросов, которые возвращают один или несколько столбцов из отдельной таблицы, поскольку это уменьшает типографские и синтаксические ошибки (см. рис. 2-3). В этом мастере вы можете выбрать имя таблицы или запроса из раскрывающегося списка «Имя». Затем вы можете выбрать необходимые столбцы в таблице или запросе, выделив все столбцы (*) или любую группу столбцов. Если вы нажмете кнопку «Упорядочить по», вы сможете выполнить сортировку по любому столбцу в источнике данных. Если для первого столбца существует ограничение, будет использоваться поле, выбранное в поле «Тогда по». При выборе параметров в мастере обратите внимание, что фактический синтаксис SQL для SelectCommand также отображается в текстовом поле, доступном только для чтения.
Рисунок 2-3
Вы можете использовать кнопку WHERE в мастере для создания оператора SQL с параметрами. Эта часть будет представлена в главе 9. Мы пока пропустим этот выбор, но важно, чтобы перед развертыванием вы использовали эти параметры, которые будут обсуждаться позже в этой книге. На развернутом сайте избегайте прямого подключения пользовательского ввода к операторам SQL. Игнорирование проблем с параметрами подвергнет ваш сайт атакам с использованием SQL-инъекций. Этот метод атаки использует ложные символы из пользовательского ввода, чтобы сделать недействительным исходный оператор SQL, а затем заменяет его деструктивным оператором. Коллекции параметров можно использовать для отправки вводимых пользователем данных в коллекции параметров ADO.NET, которые могут использовать функциональные возможности коллекций для уменьшения проблем с внедрением SQL.
Хотя мастер настройки источника данных имеет множество опций, помогающих быстро создавать операторы SQL, иногда все же необходимо напрямую ввести (или изменить) оператор SQL в отмеченной команде SelectCommand. Мастер AccessDataSource позволяет выполнять эти операции. На странице мастера выбора таблиц, запросов и столбцов вы можете выбрать переключатель «Указать собственный оператор SQL или хранимую процедуру». После выбора этой опции на странице мастера нажмите кнопку «Далее», чтобы перейти на другую страницу, где вы можете напрямую вводить пользовательские операторы в текстовую область. Вы также можете использовать Visual Studio QueryBuilder для визуального создания пользовательских операторов, используя инструменты, очень похожие на Access QueryBuilder.
Если вы не хотите использовать мастер, вы можете ввести собственный оператор SQL в сетку свойств элемента управления AccessDataSource или переключиться в представление исходного кода и ввести оператор в свойство SelectCommand тега элемента управления AccessDataSource.
Существует множество книг по SQL (того же типа, что и эта, «Начало программирования SQL» , ISBN 1-861001-80-0), и в этой книге в приложении содержится краткое введение. Если вы планируете изучить синтаксис SQL, вы можете начать с изучения команд возврата части записи (TOP и DISTINCT), синтаксиса переименования поля (AS) и метода возврата полей из двух связанных таблиц (JOIN). . В следующих упражнениях будут рассмотрены некоторые переменные в операторах SQL.
Попытка №3. Изменение оператора Select в AccessDataSource. В этом упражнении вы отобразите определенные столбцы и определенные записи из таблицы Products компании Northwind. Также будет создана страница для отображения данных, полученных по запросу. Обратите внимание, что в этом упражнении правила выбора уже находятся в исходном коде. В настоящее время пользовательский ввод в качестве опции отсутствует.
(1) Создайте файл с именем ch02_TIO_3_AlternateSelect-Commands.aspx в C:WebsitesBegAspNet2Dbch02.
(2) Добавьте элемент управления AccessDataSource с Northwind в качестве идентификатора и установите для MDB значение App_DataNorthwind.mdb. В серии диалоговых окон настройте команду «Выбрать» для извлечения всех полей из таблицы «Продукты» («имя» = «Продукты»). Взгляните на представление «Исходный код» и обратите внимание на созданный вами оператор, как показано ниже:
ВЫБРАТЬ * ИЗ ПРОДУКТОВ |
<%@ язык страницы="VB" %> <html> <head runat="сервер"> <title>ch02 TIO 3 Альтернативный выбор команд</title> </голова> <тело> <h3>ch02 Альтернативный выбор команд TIO 3</h3> <форма runat="сервер"> <asp:accessdatasource id="NorthwindAccDataSource" runat="server" selectcommand="ВЫБРАТЬ * ИЗ продуктов" datafile=" ~/App_Data/Northwind.mdb" > </asp:accessdatasource> <asp:gridview id="GridViewl" runat="server" datasourceid="NorthwindAccDataSource"> </asp:gridview> </форма> </тело> </html> |
ВЫБЕРИТЕ * ИЗ [Продукты] ГДЕ (CategroyID=3) |
<asp:accessdatasource id="NorthwindAccDataSource" runat="server" selectcommand="ВЫБРАТЬ * ИЗ [Продукты] ГДЕ (CategoryID = 3) " Datafile="~App_Data/Northwind.mdb"> </asp:accessdatasource> |
ВЫБЕРИТЕ * ИЗ ПРОДУКТОВ ГДЕ ProductID = 12 ВЫБЕРИТЕ * ИЗ продуктов WHERE ProductName = «Клюквенный соус Northwoods» ВЫБЕРИТЕ * ИЗ ПРОДУКТОВ ГДЕ ProductID <11 ВЫБРАТЬ * ИЗ ПРОДУКТОВ ГДЕ ProductID <11 Упорядочить по названию продукта по возрастанию ВЫБЕРИТЕ * ИЗ ПРОДУКТОВ ГДЕ ИД Поставщика = 6 ИЛИ ИД Поставщика = 8 ВЫБЕРИТЕ * ИЗ продуктов, где идентификатор поставщика = 24 и цена за единицу > 10. |
Переменные в расположении файла MDB
Файлы MDB хранятся в различных физических местах на жестком диске: в той же папке, что и веб-страница, в подпапке веб-страницы или в других папках на компьютере и т. д. В Visual Web Developer эти файлы можно часто просматривать в конструкторе, и указан правильный путь к файлу MDB. Однако если вы планируете ввести собственный код, вам необходимо будет следовать синтаксису, описанному в этом разделе.
Свойство DataFile элемента управления AccessDataSource содержит путь к странице, который может быть полностью уточнен (например, начинаться с буквы диска) или указан относительно местоположения страницы, содержащей AccessDataSource. Пути также могут быть относительными к приложению, т. е. использовать синтаксис URL-адреса для ссылки на путь. Этот синтаксис заменяет символ (~) корневым каталогом приложения, например: ~App_Dataproduces.mdb. Использование путей, относящихся к приложению, упрощает перемещение страниц из одного места в другое, не нарушая при этом ссылки на базу данных, поэтому рекомендуется по возможности использовать пути, относящиеся к приложению.
Во-первых, давайте посмотрим на синтаксис полного пути, который содержит полный путь к файлу MDB, начиная с корня диска компьютера, на котором находится файл:
<asp:источник данных . datafile="C:WebSitesWebApplicationApp_DataMyMdb.mdb"> |
<asp:источник данных доступа .файл_данных="MyMdb.mdb"> |
<asp:accessdatasource .файл данных="MyDaughterFolder/MyMdb.mdb"> |
<asp:источник данных доступа .файл_данных="../MyMdb.mdb"> |
<asp:источник данных доступа .файл_данных="~App_Data/MyMdb.mdb> |