` | PARSER | документация |

parser

faqfaq
авторыавторы
документациядокументация

в действиив действии
куда говоритькуда говорить
жаргонжаргон

скачатьскачать

примерыпримеры
форумфорум

документация

3. Операторы Парсера

3.5. Базы данных

3.5.1. Подключение к SQL-серверу. Оператор server

Формат вызова

^server[параметры_подключения_к_серверу;код]

Аргументы

параметры_подключения_к_серверу — данные, необходимые для подключения к SQL-серверу.

код — код, обрабатываемый Парсером при установленном подключении.

Описание

Оператор устанавливает подключение к SQL-серверу. Переданный во втором аргументе код обрабатывается Парсером, причем для обращения к базе данных используется установленное подключение. В настоящей версии Парсера поддерживается подключение к MySQL Server, Oracle или источникам данных ODBC.

Замечание. Возможность работы с тем или иным сервером баз данных зависит от того, какой вариант Парсера вы используете. Из этого следует, что один и тот же шаблон не может обращаться, например, и к Oracle, и к MySQL.

Параметры подключения к MySQL:

user:password@host:port/database, где

  • user — имя пользователя;
  • password — пароль;
  • host — имя или адрес компьютера в сети;
  • port — номер порта (указывать не обязательно);
  • database — имя базы данных.

Параметры подключения к серверу Oracle:

user:password@oracle_connection_string, где

  • user — имя пользователя;
  • password — пароль;
  • oracle_connection_string — строка параметров для подключения к серверу Oracle.

Параметры для подключения к источникам данных ODBC:

user:password@odbc_datasource, где

  • user — имя пользователя;
  • password — пароль;
  • odbc_datasource — имя источника данных.

Замечание. При работе с Oracle все SQL-запросы внутри оператора server выполняются в рамках одной транзакции. После успешного выполнения всех SQL-запросов транзакция фиксируется. При первой ошибке происходит откат транзакции, а последующие SQL-запросы игнорируются.

Замечание. Данные в базе данных MySQL должны быть представлены в кодировке koi8-r, а в Oracle и ODBC — в кодировке Windows-1251.

Замечание. В некоторых случаях бывает нужно обращаться из Windows-приложений к базе данных, управляемой сервером MySQL. При этом база данных может использоваться не только Парсером. В таком случае для работы с базой данных в кодировке koi8-r в настройках ODBC-драйвера следует задать соответствующее преобразование кодировок:

SQL command on connect: set CHARACTER SET cp1251_koi8.

Примеры

Подключение к серверу баз данных MySQL и вывод списка всех таблиц базы данных.

^server[site_user:JH12tyKNP@data/newspaperdb;
        ^sql[
show tables]
        ^menu[^item[
0]<BR>]
]

3.5.2. Выполнение SQL-запроса. Оператор sql

Формат вызова

^sql[запрос]

^sql[запрос;количество_записей]

^sql[запрос;количество_записей;пропустить]

Аргументы

запрос — запрос на языке SQL.

количество_записей — количество записей, которое будет взято из результатов запроса.

пропустить — количество пропускаемых записей.

Описание

Оператор отправляет запрос SQL-серверу и записывает полученные результаты в текущую таблицу. Столбцам таблицы присваиваются имена полей запроса. Если указано количество записей, допустим, равное 12, то в текущую таблицу будут загружены только первые двенадцать записей. Если несколько первых записей требуется пропустить, укажите их количество в качестве значения третьего аргумента.

Внимание! Вне зависимости от содержания SQL-запроса, при обработке оператора sql содержимое текущей таблицы теряется.

Замечание. Текст запроса обрабатывается на уровне обработки sql (см. п. 1.6).

Замечание. Не рекомендуется использовать запросы вида SELECT *, поскольку они могут привести к загрузке большого объема ненужных для работы данных. Кроме того, в большинстве случаев, формулируя SQL-запрос, кодер должен знать, какие данные он получит в ответ: он ведь собирается с ними дальше работать.

Примеры

Приведенный ниже фрагмент кода загружает в текущую таблицу первые 50 новостей, а затем выводит ссылки на них.

^context[news;
         ^server[
site_user:JH12tyKNP@data/newspaperdb;
                 ^sql[
SELECT id,title FROM news WHERE active=1;50]
                 ^menu[

<A HREF="details.html?id=^item[id]">^item[title]</A><BR>
                 ]
         ]
]


E-mail: mailbox@parser.ruCopyright © 1997-2001 Студия Артемия Лебедева
`