• Microsoft .NET
  • ASP.NET
  • Инструкция по файлам куки (Сookie) в ASP.NET для новичков

Фильтрация базы данных при помощи параметров в ASP.NET 2.0 - Основы фильтрации

ОГЛАВЛЕНИЕ

Основы фильтрации

При фильтрации результатов существует два интересных компонента: фильтруемая колонка и значение, по которому фильтруют. В примере, приведенном во введении, фильтруется колонка UnitPrice, и 15.00 является значением, по которому фильтруется. Обычно  значение, по которому фильтруют, не является жёстко закодированным, но в то же время оно может зависеть от пользовательского ввода. Для фильтрации по значению SQL-выражения обычно используют параметры, которые указывают места заполнения, куда впоследствии может быть вставлено значение. Обычно параметры имеют формат @ParameterName или ?, в зависимости от используемой базы данных. К примеру, при использовании параметризированных запросов c базами данных Microsoft Access применяется ?; при использовании параметризированных запросов для Microsoft SQL Server применяется @ParameterName. Переписав предыдущий SQL-запрос для того, чтобы он использовал параметры, мы получим следующий код:

-- Для Microsoft SQL Server...
SELECT ProductID, ProductName
FROM Products
WHERE UnitPrice < @PriceFilter

-- Для Microsoft Access...
SELECT ProductID, ProductName
FROM Products
WHERE UnitPrice < ?

(ParameterName может иметь любое значение; я решил использовать PriceFilter.)

Определив данный параметр, можно программно установить  его значение до выполнения выражения. Если вы знакомы с кодом ADO.NET, то вы знаете, что при написании кода для создания запроса к базе данных вы создаете объект команды (такой, как SqlCommand) который указывает выполняемый SQL-запрос или хранимую процедуру (посредством свойства CommandText), а также используемый объект соединения (посредством свойства Connection). Объект команды также обладает набором Parameters, которым позволяет вам программно указать значения для параметров, указанных в запросе (либо используемых в хранимой процедуре).

Используя элементы управления источником данных, вам не нужно программно устанавливать параметр (если этого от вас не требуется), так как значение параметра может быть установлено декларативно, и мы вскоре это увидим. Тем не менее, при декларативной установке значений параметра вам необходимо понимать, что элемент управления источником данных на самом деле программно добавляет декларативно указанное значение к набору Parameters нижележащего объекта команд. Вкратце, элемент управления источником данных выполняет тот же код ADO.NET, который вам необходимо было бы использовать при программном доступе к данным.

Давайте теперь обратим наше внимание на фильтрацию данных с использованием SqlDataSource. В последующих примерах (которые вы можете загрузить в конце данной статьи) мы будем использовать сокращенную версию базы данных Northwind Access. Мы увидим способ указания параметров фильтрации как при помощи мастера SqlDataSource, так и напрямую через его свойства.