Доклад: Использование пакета Cold Fusion для MS Windows при построении WWW - интерфейсов к базам данных

Создавая 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 - запросах соответствует произвольной последовательности символов. Также для определения маски может использоваться символ '_' (подчерк), соответствующий одному произвольному символу.

5.8 Использование результатов запроса для динамического создания HTML - документа

Для вывода данных возвращаемых в результате выполнения запроса определенного в DBQUERY применяется тег DBOUTPUT. Внутри этого тега, связанного с конкретным запросом, может находиться обычный текст, теги HTML, ссылки на поля определенные в запросе. При обработке шаблона, содержимое тега DBOUTPUT отправляется клиенту для каждой записи, возвращаемой в результате выполнения запроса, с подстановкой соответствующих значений параметров и полей.

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

<DBOUTPUT QUERY="имя запроса" MAXROWS=n>
Текст, теги HTML,
ссылки на поля и параметры (т.е. #Name#)
</DBOUTPUT>

Атрибут QUERY применяется для указания имени запроса DBQUERY, результат выполнения которого будет использоваться, а атрибут MAXROWS определяет максимальное количество записей этого запроса, которые будут переданы для вывода в тег DBOUTPUT.

Пример
Для вывода результата выполнения запроса с именем 'AllPersons', отображая имя персоны и телефон, и разделяя записи горизонтальной линией, может использоваться следующая конструкция:

<DBOUTPUT QUERY="AllPersons" MAXROWS=50>
<HR>
#FullName# (Телефон: #Phone# ) <BR>
</DBOUTPUT>

Результат обработки этого тега будет иметь вид:

<HR>
Иванов Иван Иванович (Телефон: 222-22-22 ) <BR>
<HR>
Петров Петр Петрович (Телефон: 444-44-44 ) <BR>

5.9 Вывод результата выполнения запроса в виде таблицы

Теги DBTABLE и DBCOL всегда употребляются вместе для отображения результата выполнения запроса в виде таблицы.

К-во Просмотров: 812
Бесплатно скачать Доклад: Использование пакета Cold Fusion для MS Windows при построении WWW - интерфейсов к базам данных