小巧。快速。可靠。
三选二。

SQLite C 接口

创建和销毁 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 shim 实现使用,在其他上下文中没有用处。

sqlite3_create_filename(D,J,W,N,P) 为数据库文件名 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() 获得的内存分配。在 Y 为 NULL 指针的情况下调用 sqlite3_free_filename(Y) 是一个无害的空操作。

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

另请参阅 对象常量函数 列表。