Данные клиента подключения к базе данных
Эти функции используются для связывания одного или нескольких именованных указателей с подключением к базе данных. Вызов 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