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

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Создайте и разрушьте имена файлов 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 журнала и файлом W WAL и с парами ключа/значений N параметров URI в массиве P. Результат sqlite3_create_filename(D,J,W,N,P) это указатель на имя файла базы данных, которое безопасно передать таким функциям, как:

Если ошибка распределения памяти происходит, 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 = 0. Ни один из 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(), то плохие вещи, такие как повреждение кучи или segfaults могут произойти. Значение Y не должна использоваться снова, после вызова sqlite3_free_filename(Y). Это означает что, если метод sqlite3_vfs.xOpen() VFS вызвали, используя Y, то соответствующий метод [sqlite3_module.xClose() должен также быть вызван до запроса sqlite3_free_filename(Y).