Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Программные интерфейсы общего назначения > Прикладные библиотеки и технологии > Библиотека менеджера QDB > Справочник по клиентскому API менеджера QDB > qdb_connect()



qdb_connect()

Подключение к базе данных

Прототип:

#include <qdb/qdb.h>
qdb_hdl_t * qdb_connect( const char *dbname,
int flags );

Аргументы:

dbname
Имя устройства базы данных (например, /dev/qdb/customerdb).
flags
Атрибуты соединения (0 или комбинация флагов):
QDB_CONN_DFLT_SHARE
Стандартный режим разделения соединений (соответствует опции -C менеджера qdb). Без этого флага все соединения создаются как приватные.
QDB_CONN_NONBLOCKING
Функция qdb_statement() будет завершаться немедленно (с установкой errno в EBUSY) при блокировании базы данных. По умолчанию qdb_statement() завершается лишь при выдерживании таймаута (см. qdb_setbusytimeout()). Установка флага делает все последующие вызовы qdb_connect() также не блокирующими (соответствует опции -T со значением 0).
QDB_CONN_STMT_ASYNC
Исполнять запросы асинхронно. qdb_statement() может вернуть управление до фактического завершения исполнения запроса к базе данных. См. "Использование асинхронного режима" далее.

Библиотека:

qdb

Описание:

Функция позволяет установить соединение с базой данных по её имени. В результате возвращается идентификатор соединения. Соединение требуется для каждой открываемой базы данных и для каждого совместного соединения.


Note: Два потока могут как разделять одно соединение, так и иметь собственные соединения.

Для завершения соединения следует вызвать qdb_disconnect().

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

По умолчанию QDB завершает исполнение запросов перед возвращением управления из qdb_statement(). Это может быть переопределено с помощью флага QDB_CONN_STMT_ASYNC.

В асинхронном режиме некоторые ошибки могут быть обнаружены до исполнения запроса (например, синтаксические), но далеко не все. Оставшиеся ошибки можно определить лишь последующим вызовом qdb_getresult().

В асинхронном режиме обеспечивается параллелизм между сервисом и клиентами, особенно в случаях отложенного получения результатов запроса (например, в запросе SELECT). Недостатком является необходимость обязательного дополнительного контроля статуса операции с помощью qdb_getresult().

Асинхронный режим удобен для запросов SELECT, но достаточно неудобен для управления базой данных (например, при вызовах INSERT, UPDATE и DELETE).

Возвращаемое значение:

Указатель на соединение (qdb_hdl_t) при успешном завершении, NULL с установкой errno в случае ошибки.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

qdb_disconnect(), qdb_setbusytimeout(), qdb_statement()




Предыдущий раздел: перейти