Получение значений параметров URI
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) должен быть одним из следующих:
- Указатель на имя файла базы данных, созданный ядром SQLite и переданный в метод xOpen() реализации VFS, или
- Имя файла, полученное из sqlite3_db_filename(), или
- Новое имя файла, созданное с помощью sqlite3_create_filename().
Если 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" в любом регистре, или если значение начинается с цифры ноль. Если 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 3.31.0 (2020-01-22), входной параметр F также может быть именем файла журнала отката или файла WAL помимо основного файла базы данных. До версии 3.31.0 эти процедуры работали только если F было именем основного файла базы данных. Когда параметр F является именем файла журнала отката или файла WAL, он имеет доступ ко всем тем же параметрам запроса, что и в основном файле базы данных.
Дополнительную информацию см. в документации URI-имени файла.
См. также списки Объектов, Констант и Функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/uri_boolean.html