Выполнение SQL-запроса.
Название | Тип | Описание |
---|---|---|
id | id_name | Уникальный, в рамках приложения, идентификатор объекта. Доступ к объекту с помощью AppScript выполняется через этот идентификатор. Если id не задан, то интерпретатор автоматически заполнит его некоторым случайным в момент запуска приложения. В этом случае appxml-программист лишается возможности обращаться к объекту. |
sql | string | Назначить запрос к выполнению. |
execute | boolean | Выполнить назначенный запрос. |
Название | Тип | Описание |
---|---|---|
auto-commit | boolean | Устанавливает/возвращает флаг автоматического выполнения commit. Имеется ввиду commit относительно группы sql-statements, которые были назначены одновременно и одновременно выполняются. |
connect | string | ID тега Connect, описанного в теге AppXML. |
export | Атрибут для экспорта данных. | |
file | string | @file |
method | get | post | Метод обращения к HTTP ресурсу, по умолчанию get. |
refuse | boolean | Флаг отказа в обслуживании запросов. Используется (включается) при проблемном проведении обновления базы и для фильтрации доступа только к системным возможностям. |
silence | boolean | Флаг включения/отключения сообщений об ошибке. |
url | string | URL страницы на вебсервере в формате http://server.com/page.html |
last-generated-id | string | Для запроса «Добавление новой записи» возвращает последний сгенерированный id записи. |
Название | Тип | Описание |
---|---|---|
onCreated | code | Описание действий для события, возникающего единожды, после создания объекта. Правила описания см. (Описание событий в ApplicationXML) |
onExecuted | code | Команда, выполняемая после успешного скачивания страницы. Правила описания см. (Описание событий в ApplicationXML) |
onError | code | Команда, выполняемая при ошибке. Правила описания см. (Описание событий в ApplicationXML) |
<query …/> - это объект, позволяющий выполнять SQL-запросы. В теле AppXML-скрипта, можно описать несколько объектов <query …/>, каждый со своим запросом и обращаться к ним через атрибут execute, давая команду на выполнение. Объекты <query …/> описывается в разделе <common> AppXML-скрипта.
Если нужно выполнить один небольшой (по синтаксису) запрос, рекомендуется описать его в атрибуте sql.
Если нужно выполнить большой запрос или несколько запросов, рекомендуется описывать их во внешнем файле, а его имя указать в атрибуте file. Если файл, в дальнейшем, будет распространяться в составе jar-архива, то необходимо к имени файла добавить приставку «res:», а полное имя должно указывать на файл относительно jar-архива (корневой каталог – это корень внутри jar-архива).
Рекомендуется использовать объекты <query …/> только для выполнения команд, модифицирующих данные или структуры (DML-команд). Например, при написании командных AppXML-скриптов.
Вложенные тэги игнорируются.
Параметризованный запрос создается добавлением параметров в тело запроса.
Объявление нового объекта типа <query>:
<common> <query id="myQuery" sql="select * from device where id=%device_id and name='%device_name'" /> </common>
Обращение к запросу при событии onSelected в некотором поле ввода:
<edititem id="price" text="#price" text-position="left" columns="6" enable="false" height="18" margin-bottom="1"/> <edititem id="device_id" text="#device" text-position="left" reference-id="deviceTypeView" text-font-style="bold" columns="10" height="18"> <onselected> if (price.value==0) { // устанавливаем новое значение для параметра запроса myQuery{device_id => this.value}; // вытаскиваем значение запроса price.value=myQuery.value; } </onselected> </edititem>
Обращение к результату запроса по индексу.
<common> <query id="countryDetails"> select id, name from country order by name </query> <toolbar id="toolbarId"> <toolbaritem text="Enter"> <onaction> <![CDATA[ var i = 0; countryDetails.execute = true; for (i = 0; i < length(countryDetails); i ++){ println("id = " + countryDetails[i][0]); println("name = " + countryDetails[i][1]); } ]]> </onaction> </toolbaritem> </toolbar> </common>
Два способа передачи параметров в запрос. (setParams() и setSqlParams())
<common> <query id="qu1"> select name from country where id = %country_id </query> <query id="qu2"> insert into country (name, capital, population, area) values(?, ?, ?, ?); </query> <toolbar id="t1"> <toolbaritem text="Query1"> <onaction> var id = 2; qu1.setParams({'country_id' => id}); qu1.execute = true; if (length(qu1) > 0){ println("name = " + qu1[0][0]); } </onaction> </toolbaritem> <toolbaritem text="Query2"> <onaction> var param_ar = []; var n = 0; param_ar[n] = "Ukraine"; n ++; param_ar[n] = "Kiev"; n ++; param_ar[n] = 45782.6; n ++; param_ar[n] = 603700; n ++; qu2.setSqlParams(param_ar); qu2.execute = true; </onaction> </toolbaritem> </tollbar> </common>