Spec-Zone.ru › SQLite

Создание и удаление имён файлов VFS

sqlite3_filename sqlite3_create_filename(
  const char *zDatabase,
  const char *zJournal,
  const char *zWal,
  int nParam,
  const char **azParam
);
void sqlite3_free_filename(sqlite3_filename);

Эти интерфейсы предназначены для использования реализациями VFS-подложки и не применимы вне этого контекста.

Функция sqlite3_create_filename(D,J,W,N,P) выделяет память для хранения версии имени файла базы данных D с соответствующим файлом журнала J и файлом WAL W и с N парами параметров URI ключ/значение в массиве P. Результатом функции sqlite3_create_filename(D,J,W,N,P) является указатель на имя файла базы данных, который безопасно передавать в такие функции, как:

  • sqlite3_uri_parameter(),
  • sqlite3_uri_boolean(),
  • sqlite3_uri_int64(),
  • sqlite3_uri_key(),
  • sqlite3_filename_database(),
  • sqlite3_filename_journal(), или
  • sqlite3_filename_wal().
Если произошла ошибка выделения памяти, функция sqlite3_create_filename() может вернуть значение NULL. Выделенная память из sqlite3_create_filename(X) должна быть освобождена соответствующим вызовом sqlite3_free_filename(Y).

Параметр P в sqlite3_create_filename(D,J,W,N,P) должен быть массивом из 2*N указателей на строки. Каждая пара указателей в этом массиве соответствует ключу и значению для параметра запроса. Параметр P может быть указателем NULL, если N равно нулю. Ни один из 2*N указателей в массиве P не должен быть указателем NULL, а указатели на ключи не должны быть пустыми строками. Ни один из параметров D, J или W для sqlite3_create_filename(D,J,W,N,P) не может быть указателем NULL, хотя они могут быть пустыми строками.

Функция sqlite3_free_filename(Y) освобождает выделенную ранее память, полученную из sqlite3_create_filename(). Вызов sqlite3_free_filename(Y), где Y является указателем NULL, является безопасной операцией без эффекта.

Если параметр Y для sqlite3_free_filename(Y) — это что-либо, кроме указателя NULL или указателя, полученного ранее из sqlite3_create_filename(), то могут произойти такие неприятности, как повреждение кучи или сегфолты. Значение Y не должно использоваться повторно после вызова sqlite3_free_filename(Y). Это означает, что если метод sqlite3_vfs.xOpen() VFS был вызван с использованием Y, то соответствующий метод [sqlite3_module.xClose() также должен быть вызван до вызова sqlite3_free_filename(Y).

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

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

Spec-Zone.ru

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