Small. Fast. Reliable.
Choose any three.

SQLite C接口

创建和销毁VFS文件名

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

这些接口提供给VFS填充程序实现使用,在该上下文之外没有用。

sqlite3_create_filename(D,J,W,N,P)分配内存以保存数据库文件名D的版本,该版本的数据库文件D具有相应的日志文件J和WAL文件W,并且数组P中具有N个URI参数键/值对。sqlite3_create_filename的结果(D,J,W,N,P)是指向数据库文件名的指针,该文件名可以安全地传递给以下例程:

如果发生内存分配错误,则sqlite3_create_filename()可能返回NULL指针。从sqlite3_create_filename(X)获得的内存必须通过对sqlite3_free_filename(Y)的相应调用来释放。

sqlite3_create_filename(D,J,W,N,P)中的P参数应该是2 * N个指向字符串的指针的数组。此数组中的每对指针对应于查询参数的键和值。如果N为零,则P参数可以是NULL指针。P数组中的2 * N指针均不能为NULL指针,并且键指针不应为空字符串。sqlite3_create_filename(D,J,W,N,P)的D,J或W参数都不能为NULL指针,尽管它们可以为空字符串。

sqlite3_free_filename(Y)例程释放先前从sqlite3_create_filename()获得的内存分配。调用sqlite3_free_filename(Y)(其中Y是NULL指针)是无害的操作。

如果sqlite3_free_filename(Y)的Y参数是NULL指针或先前从sqlite3_create_filename()获取的指针以外的任何其他参数,则可能会发生诸如堆损坏或段错误之类的不良情况。在调用sqlite3_free_filename(Y)之后,不应再次使用值Y。这意味着,如果已使用Y调用了VFS的sqlite3_vfs.xOpen()方法,则在调用sqlite3_free_filename(Y)之前也应调用相应的[sqlite3_module.xClose()方法。

另请参见 对象常量函数的列表