CODB-QUERY

Name

CODB-QUERY --  Библиотека для работы с базами данных CODB посредством запросов.

Function

NIL                 codb_close(<oDB>)
oDB                 codb_connect()
oRes                codb_execute(<oDB>,<sQuery>,[<sDatabase>],[<aFiles>])
'' | 'ERROR'        codb_get_answer(<oRes>)
sName               codb_get_column(<oRes>, <nIndex>)
sError | NIL        codb_get_error(<oRes>)
oMetaobject         codb_get_metaobject(<oDB>,<sID>,[<sDatabase>])
oObject             codb_get_object(<oDB>,<sID>,[<sDatabase>])
aResult             codb_get_result(<oRes>)
nColumns            codb_num_columns(<oRes>)
nRows               codb_num_rows(<oRes>)
oResult             codb_put_metaobject(<oDB>,<oContent>,[<sDatabase>],<sClass>)
oResult             codb_put_object(<oDB>,<oContent>,[<sDatabase>],<sClass>)

Description

Библиотека codb-query предоставляет унифицированный способ работы с базами данным CODB посредством запросов вместо вызовов методов классов CODBDEPOSITORY, CODBDICTIONARY, CODBLIST и CODBIDLIST.

Запросы строятся на языке CQL (диалекте SQL, адаптированном для CODB). Вы можете задействовать эту библиотеку как программно, так и используя консольный клиент codb.

Использование в программах.

Для использования библиотеки codb-query в программах вы должны собрать свою программу с этой библиотекой. Укажите при сборке '-lcodb-query'.

Типичный сеанс работы состоит из следующих этапов:

db := codb_connect() // Подключение к базам данных
e := codb_get_error( db ) // Проверка ошибок
if e != NIL
?? "ERROR codb_connect(): " + e + chr(10)
return 1
endif

// Выполнение запроса
oRes := codb_execute( db, 'show databases' )

// Обработка результата
aResult := codb_get_result( oRes )

codb_close( db ) // Закрытие баз данных

Подключение к базам данных обеспечивает функция codb_connect(). При этом открываются все доступные базы данных. Закрытие баз данных обеспечивается функцией codb_close().

Собственно операции с базой данных обеспечивают функции: codb_execute(), codb_get_metaobject(), codb_get_object(), codb_put_metaobject(), codb_put_object().

Отличие этих функций в том, что codb_execute() возвращает объект, из которого собственно данные можно получить функцией codb_get_result(), а остальные функции оперируют готовыми объектами.

Для контроля ошибок используются функции codb_get_answer() и codb_get_error().

Результат запроса, полученный при выполнении codb_execute(), можно обработать, используя функции codb_get_result(), codb_num_columns(), codb_num_rows() и codb_get_column().

Кроме этого, результат можно получить в отформатированном виде. Для этого объект результата передаётся в метод 'show' объекта класса CODBFormatter().

Использование консоли codb.

codb [параметры] [словарь[:депозитарий]]
При запуске codb без параметров, он будет работать в интерактивном режиме.

Параметры codb:

Полный перечень команд можно посмотреть, запустив codb -h.

Примеры:

codb ETC01 -c 'show classes;'
Будет выведен список классов в базе данных ETC01.
codb ETC01:ETC0101 -c 'select * from mng_vendor,mng_author;' --delim='|'
Будет выведены все поля объектов классов mng_vendor и mng_author из базы данных ETC01 и депозитария ETC0101 с разделителем '|'.

Примечание: данные выводятся в табличном виде, то есть поля дополняются пробелами до ширины максимального элемента.

Команды CQL.

Каждая команда должна заканчиваться точкой с запятой. Вы можете использовать комментарии, начинающиеся с символа '#' до конца строки (символа '\n'). Строки ограничиваются одинарными кавычками ('). При употреблении кавычки в строке она экранируется обратной косой чертой (\').

Вы можете также передать несколько команд как в параметре -c, так и через каналы:

echo 'show classes;show indexes;' | codb ETC01

Краткое описание команд CQL.

В интерактивном режиме доступна команда quit - выход из консоли. Вы можете также выйти из консоли, нажав клавишу Esc.

Подробное описание команд CQL:

help [<команда>] Помощь по команде. Если команда не указывается, показывается список доступных команд с их кратким описанием.

create <метакласс> (<поле1>=<значение1>[, ...]) или create database <имя> <путь> [<описание>] Создать базу данных или метаобъект. Примеры: create database EAS01 /var/lib/db 'База данных E/AS'; create attribute (name='phone',type='C',len=20);

Доступные классы метаобъектов:

delete <id> Удалить объект или метаобъект по его идентификатору.

describe <имя_класса> Показать структуру класса по его имени.

drop <метакласс> <имя_метаобъекта> Удалить метаобъект по его имени.

Доступные классы метаобъектов:

get <id> Получить содержимое объекта из депозитария по его идентификатору.

metaget <id> Получить метаобъект из словаря по его идентификатору.

metaput (<поле1>=<значение1>[, ...]) Создать или изменить метаобъект в словаре. Если в списке полей указан идентификатор (id), будет заменён существующий объект.

put (<поле1>=<значение1>[, ...]) Создать или изменить объект в депозитарии. Если в списке полей указан идентификатор (id), будет заменён существующий объект.

select <поля> from <класс> [where <условия>] Получить список полей объектов, удовлетворяющих указанным критериям.

<поля> - список полей, разделённых запятыми. Поля с пробелами заключаются в кавычки. Вы можете указать * для показа всех полей всех указанных классов.

<класс> - список имён классов, разделённых запятыми. Имена классов с пробелами заключаются в кавычки.

<условия> - условие по правилам CLIP. Поддерживаются операции сравнения '==', '!=', '>', '>=', '<=', '<' и логические операции '.not.', '.and.', '.or.'. Значения должны заключаться в двойные кавычки ("), а между условиями не должно быть пробелов.

Пример:

select id,author_name,email from mng_author where code=="Uri";

show <метакласс> Показать список метаобъектов.

Доступные классы метаобъектов:

use <база_данных> [<депозитарий>] Изменить текущую базу данных и депозитарий.

Function CODB_CLOSE

 codb_close(<oDB>) --> NIL
 

Function CODB_CONNECT

 codb_connect() --> oDB

Function CODB_EXECUTE

 codb_execute(<oDB>,<sQuery>,[<sDatabase>],[<aFiles>]) --> oRes

Function CODB_GET_ANSWER

 codb_get_answer(<oRes>) --> '' | 'ERROR'

Function CODB_GET_COLUMN

 codb_get_column(<oRes>, <nIndex>) --> sName

Function CODB_GET_ERROR

 codb_get_error(<oRes>) --> sError | NIL

Function CODB_GET_METAOBJECT

 codb_get_metaobject(<oDB>,<sID>,[<sDatabase>]) --> oMetaobject

Function CODB_GET_OBJECT

 codb_get_object(<oDB>,<sID>,[<sDatabase>]) --> oObject

Function CODB_GET_RESULT

 codb_get_result(<oRes>) --> aResult

Function CODB_NUM_COLUMNS

 codb_num_columns(<oRes>) --> nColumns

Function CODB_NUM_ROWS

 codb_num_rows(<oRes>) --> nRows

Function CODB_PUT_METAOBJECT

 codb_put_metaobject(<oDB>,<oContent>,[<sDatabase>],<sClass>) --> oResult

Function CODB_PUT_OBJECT

 codb_put_object(<oDB>,<oContent>,[<sDatabase>],<sClass>) --> oResult