const char *sqlite3_uri_parameter(sqlite3_filename z, const char *zParam); int sqlite3_uri_boolean(sqlite3_filename z, const char *zParam, int bDefault); sqlite3_int64 sqlite3_uri_int64(sqlite3_filename, const char*, sqlite3_int64); const char *sqlite3_uri_key(sqlite3_filename z, int N);
Это сервисная процедура, полезная для реализации VFS, а именно для проверки, если файлом базы данных был URI, который содержал определенный параметр запроса, и если так, то получения значения того параметра запроса.
Первый параметр к этим интерфейсам (в дальнейшем именуемый F) должен быть одним из:
Если F подходящее имя файла (как описано в предыдущем параграфе) и P название параметра запроса, то sqlite3_uri_parameter(F,P) вернет значение параметра P, если это существует или NULL, если P не появляется как параметр запроса в F. Если P параметр запроса F, и у этого нет явного значения, sqlite3_uri_parameter(F,P) вернет указатель на пустую строку.
sqlite3_uri_boolean(F,P,B) предполагает, что P булев параметр и возвращает true (1) или false (0), согласно значению P. sqlite3_uri_boolean(F,P,B) вернет true (1), если значение параметра запроса P является одним из "yes", "true" или "on" в любом регистре или если значение начинается с числа, отличного от нуля. sqlite3_uri_boolean(F,P,B) вернет false (0), если значение параметра запроса P является одним из "no", "false" или "off" в любом регистре или если значение начинается с 0. Если P не параметр запроса на F или если значение P не соответствует ни одному из вышеупомянутых вариантов, то sqlite3_uri_boolean(F,P,B) вернет (B!=0).
sqlite3_uri_int64(F,P,D) преобразовывает значение P в 64-битное целое число со знаком и вернет это целое число или D, если P не существует. Если значение P что-то другое, чем целое число, то ноль возвращен.
sqlite3_uri_key(F,N) возвращает указатель на имя (не значение) параметра N запроса для имени файла F или NULL, если N меньше ноля или больше, чем количество параметров запроса минус 1. Значение N основано на ноле, таким образом, N должен быть 0, чтобы получить название первого параметра запроса, 1 для второго параметра и т.д.
Если F = NULL, sqlite3_uri_parameter(F,P) вернет NULL, sqlite3_uri_boolean(F,P,B) вернет B. Если F не NULL и не является указателем пути файла базы данных, который ядро SQLite передало в метод xOpen VFS, то поведение этой функции не определено и вероятно нежелательно.
Начиная с SQLite version 3.31.0 (2020-01-22) параметр F может также быть названием файла журнала обратной перемотки или файла WAL в дополнение к главному файлу базы данных. До версии 3.31.0 это работало только если F был названием главного файла базы данных. Когда параметр F название журнала обратной перемотки или файла WAL, у этого есть доступ ко всем одинаковым параметрам запроса, какие были для главного файла базы данных.