<query ... />

Выполнение SQL-запроса.


Атрибуты

Основные атрибуты (R/W):

Название Тип Описание
id id_name Уникальный, в рамках приложения, идентификатор объекта. Доступ к объекту с помощью AppScript выполняется через этот идентификатор.
Если id не задан, то интерпретатор автоматически заполнит его некоторым случайным в момент запуска приложения. В этом случае appxml-программист лишается возможности обращаться к объекту.
sql string Назначить запрос к выполнению.
execute boolean Выполнить назначенный запрос.

Прочие атрибуты (R/W):

Название Тип Описание
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 записи.

Событийные атрибуты (R/W):

Название Тип Описание
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>
 
tags/datasource/query.txt · Последние изменения: 29/10/2020 16:33 (внешнее изменение)
 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS