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



qdb_stmt_init()

Инициализация предкомпилированного запроса к базе данных

Прототип:

#include <qdb/qdb.h>
int qdb_stmt_init( qdb_hdl_t *hdl,
const char *sql,
uint32_t len );

Аргументы:

hdl
Указатель на дескриптор базы данных.
sql
Строка с SQL запросом. Она может содержать переменные параметры в виде ?n, где n есть число от 1 до 999. Эти параметры заполняются при исполнении qdb_stmt_exec(). Незаполненные параметры интерпретируются как NULL. Подробнее см. раздел Параметры.
len
Длина строки с SQL запросом.

Библиотека:

qdb

Описание:

Функция инициализирует предкомпилированный SQL запрос к базе данных. Запрос компилируется один раз и может выполняться многократно с разными фактическими параметрами (см. qdb_stmt_exec()).


Note: Сервис QDB исполняет предкомпилированные SQL запросы быстрее.

Освобождение предкомпилированных запросов выполняется с помощью qdb_stmt_free() или qdb_disconnect().

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

>0
Успешное завершение, возвращается идентификатор запроса, применимый в вызовах qdb_stmt_exec() и qdb_stmt_free().
-1
Возникла ошибка. Код ошибки записан в errno.

Примеры:

int stmtid;
qdb_binding_t qbind[2];
uint64_t msid,
limit;
const char *sql = "SELECT fid FROM library WHERE msid=?1 LIMIT ?2;";
stmtid = qdb_stmt_init( db, sql, strlen( sql ) + 1 );
if ( stmtid == -1 )
{
/* Could not compile */
return (-1);
}
msid = 1;
limit = 10;
QDB_SETBIND_INT( &qbind[0], 1, msid );
QDB_SETBIND_INT( &qbind[1], 2, limit );
if ( qdb_stmt_exec( db, stmtid, qbind, 2 ) == -1 )
{
/* Could not execute */
return (-1);
}
qdb_stmt_free( db, stmtid );


Note: Обратите внимание на добавление +1 к длине строки, полученной с помощью strlen().

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

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

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

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

qdb_stmt_exec(), qdb_stmt_free(), qdb_binding_t




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