Выполнение 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>