小巧、快速、可靠。
三者选其二。

SQLite C 接口

数据库文件底层控制

int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);

The sqlite3_file_control() 接口直接调用与特定数据库关联的 sqlite3_io_methods 对象的 xFileControl 方法。数据库名称对于主数据库为 "main",对于 TEMP 数据库为 "temp",或者对于使用 ATTACH SQL 命令添加的数据库,则为 AS 关键字后面的名称。NULL 指针可用于代替 "main" 来引用主数据库文件。此例程的第三和第四个参数直接传递给 xFileControl 方法的第二个和第三个参数。xFileControl 方法的返回值将成为此例程的返回值。

一些用于 sqlite3_file_control() 的操作码由 SQLite 核心直接处理,从不调用 sqlite3_io_methods.xFileControl 方法。操作参数的 SQLITE_FCNTL_FILE_POINTER 值会导致指向底层 sqlite3_file 对象的指针被写入到第 4 个参数指向的空间中。The SQLITE_FCNTL_JOURNAL_POINTER 工作方式类似,只是它返回与日志文件关联的 sqlite3_file 对象,而不是主数据库。The SQLITE_FCNTL_VFS_POINTER 操作码返回指向该文件底层 sqlite3_vfs 对象的指针。The SQLITE_FCNTL_DATA_VERSION 返回分页器中的数据版本计数器。

如果第二个参数 (zDbName) 与任何打开的数据库文件的名称不匹配,则返回 SQLITE_ERROR。此错误代码不会被记住,也不会被 sqlite3_errcode()sqlite3_errmsg() 重新调用。底层 xFileControl 方法也可能返回 SQLITE_ERROR。无法区分不正确的 zDbName 和底层 xFileControl 方法返回的 SQLITE_ERROR。

另请参阅:文件控制操作码

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