RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Получите значения для параметров 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 не один из вышеупомянутых, то поведение не определено и вероятно нежелательно. Более старые версии SQLite были более терпимы к недействительным параметрам 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, у этого есть доступ ко всем одинаковым параметрам запроса, какие были для главного файла базы данных.