Использование технологий WWW для доступа к базам данных

       

Выполнение запросов к базам данных


Для выполнения запросов к базе данных используется тег DBQUERY.

Этот тег имеет следующий синтаксис:

<DBQUERY NAME="имя запроса"

DATASOURCE="имя источника данных odbc"

SQL="sql выражение"

TIMEOUT=n MAXROWS=n DEBUG>

Атрибут NAME определяет имя

запроса, которое используется далее для отображения результата

выполнения запроса. Имя запроса должно начинаться с буквы и может

содержать буквы и цифры (пробелов быть не должно).

Атрибут DATASOURCE задает

имя источника данных ODBC,

который должен быть создан с помощью интерфейса администратора

Cold Fusion.

Ключевым атрибутом тега DBQUERY,

является атрибут SQL, который



собственно и определяет запрос к базе данных на языке SQL

(для улучшения читабельности, допускается расположение значения

атрибута SQL на нескольких

строках).

Создавая SQL запрос, следует

помнить, что конкретная база данных может иметь свои особенности

в синтаксисе SQL, использование

которых ограничивается этой базой данных. Чтобы проверить, является

ли конкретное SQL выражение

совместимым с ODBC и независимым

от конкретной базы данных, лучше всего использовать Microsoft

Query, входящий в состав Microsoft

Office. Для этого нужно в меню Microsoft

Query выбрать "Файл/Выполнить

SQL", в появившемся

окне диалога ввести предложение SQL,

выбрать источник данных ODBC,

нажав на кнопку "Источники...",

после чего нажать на кнопку "Выполнить".

Этот продукт можно также использовать и для создания SQL

- выражений, используя для этого визуальные средства создания

запросов. Получить SQL - выражение

созданного таким образом запроса можно нажав на кнопку "SQL"

в панели инструментов.

Атрибут MAXROWS является необязательным

и определяет максимальное количество записей, которые могут быть

возвращены в результате выполнения запроса.

Атрибут TIMEOUT также является

необязательным и определяет максимальное количество миллисекунд

для выполнения запроса, до выдачи сообщения об ошибке.
Заметим,

что этот атрибут поддерживается только некоторыми ODBC

- драйверами (например, драйвером

для MS SQL Server 6.0).

Атрибут DEBUG используется

для отладки запросов. При наличии этого атрибута пользователю

отправляется дополнительная информация о выполнении этого запроса,

такая как текст выполненного SQL

- запроса, число возвращенных записей и др.

Приведем пример запроса с именем 'AllPersons',

который возвращает все записи таблицы 'Persons'

из базы данных, с которой связан источник данных ODBC

с именем 'Person DB':

<DBQUERY NAME="AllPersons"

DATASOURCE="Person DB"

SQL="select * from Persons">

Для динамической настройки SQL -

выражения можно использовать параметры, переданные в шаблон. Это

могут быть параметры, переданные из формы, URL,

а также переменные CGI. Параметры,

используемые внутри SQL -

выражения, должны быть обрамлены символом "#"

(например #Name#).

При обработке запроса Cold

Fusion ищет параметр с таким именем среди параметров, полученных

из формы, в URL или среди

переменных CGI. При нахождении

подходящего параметра его значение подставляется вместо соответствующей

ссылки на параметр.

Примеры использования параметров в SQL

-выражении


Пример 1

Предположим что обрабатывается URL

"/cgi-shl/dbml.exe?Template=prs.dbm&Id=22",

а атрибут SQL в DBQUERY

имеет вид

SQL="select * from Persons

where Id = #Id#",

тогда в базу данных будет передано следующее SQL - выражение:

select * from Persons where Id

= 22 .

Пример 2

Предположим, что в шаблон передан параметр FirstLetters

и нужно найти в таблице Persons

записи, в которых первые

буквы в поле FullName совпадают

со значением этого параметра. Значение атрибута SQL

в этом случае будет следующим:

SQL="select * from Persons

where FullName like '#FirstLetters#%'"

Следует обратить внимание на то, что маска, состоящая из параметра

и символа '%', в отличие от

предыдущего примера, обрамлена одинарными кавычками.Это связано

с тем, что поле Id из примера

1 имеет числовой тип, а поле

FullName - текстовый тип (синтаксис

SQL требует, чтобы текстовые

значения всегда были обрамлены одинарными кавычками).

Для того чтобы задать маску, в примере использовался символ '%',

который в SQL - запросах соответствует

произвольной последовательности символов. Также для определения

маски может использоваться символ '_'

(подчерк), соответствующий одному

произвольному символу.


Содержание раздела