Spec-Zone.ru › SQLite

Данные клиента подключения к базе данных

Эти функции используются для связывания одного или нескольких именованных указателей с подключением к базе данных. Вызов sqlite3_set_clientdata(D,N,P,X) приводит к прикреплению указателя P к подключению к базе данных D с использованием имени N. Последующие вызовы sqlite3_get_clientdata(D,N) вернут копию указателя P или NULL-указатель, если ранее не было вызовов sqlite3_set_clientdata() с теми же значениями D и N. Сравнение имён выполняется с помощью strcmp() и поэтому чувствительно к регистру.

Если P и X оба не NULL, то деструктор X вызывается с аргументом P при первом из следующих событий:

  • Возникает ошибка недостатка памяти во время вызова sqlite3_set_clientdata(), который пытается зарегистрировать указатель P.
  • Производится последующий вызов sqlite3_set_clientdata(D,N,P,X) с теми же параметрами D и N.
  • Закрывается подключение к базе данных. SQLite не гарантирует порядок вызова деструкторов, только то, что все деструкторы будут вызваны ровно один раз в какой-то момент во время процесса закрытия подключения к базе данных.

SQLite не выполняет никаких действий с данными клиента, кроме вызова деструкторов для данных клиента в соответствующее время. Предполагаемое использование данных клиента — предоставить механизм для библиотек-обёртков, чтобы хранить дополнительную информацию о подключении к базе данных SQLite.

Нет ограничений (кроме доступной памяти) на количество различных указателей данных клиента (с разными именами), которые могут быть прикреплены к одному подключению к базе данных. Однако реализация оптимизирована для случая наличия только одного или двух разных имён данных клиента. Приложениям и библиотекам-обёрткам не рекомендуется использовать более одного имени данных клиента.

Нет способа перечислить указатели данных клиента, связанные с подключением к базе данных. Параметр N можно рассматривать как секретный ключ, так что только код, знающий секретный ключ, может получить доступ к связанным данным.

Предупреждение о безопасности: эти интерфейсы не должны быть доступны в скриптовых языках или в других ситуациях, где злоумышленник может их вызвать. Любой агент, который может вызвать эти интерфейсы, вероятно, также сможет получить контроль над процессом.

Данные клиента подключения к базе данных доступны только для версии SQLite 3.44.0 (2023-11-01) и более поздних.

См. также: sqlite3_set_auxdata() и sqlite3_get_auxdata().

См. также списки Объектов, Констант и Функций.

SQLite is in the Public Domain.
https://sqlite.org/c3ref/get_clientdata.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API