Подключение к базе данных
#include <qdb/qdb.h>qdb_hdl_t * qdb_connect( const char *dbname,int flags );
/dev/qdb/customerdb
).0
или комбинация флагов): EBUSY
) при блокировании базы данных. По умолчанию qdb_statement() завершается лишь при выдерживании таймаута (см. qdb_setbusytimeout()). Установка флага делает все последующие вызовы qdb_connect() также не блокирующими (соответствует опции -T со значением 0
). qdb
Функция позволяет установить соединение с базой данных по её имени. В результате возвращается идентификатор соединения. Соединение требуется для каждой открываемой базы данных и для каждого совместного соединения.
![]() | Два потока могут как разделять одно соединение, так и иметь собственные соединения. |
Для завершения соединения следует вызвать 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()
Предыдущий раздел: перейти