Small. Fast. Reliable.
Choose any three.

SQLite C接口

数据库文件的低级控制

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

所述sqlite3_file_control()接口使得所述xFileControl方法的直接调用sqlite3_io_methods对象与由第二个参数识别一个特定的数据库相关联。对于主数据库,数据库名称为“ main”,对于TEMP数据库,数据库名称为“ temp”,对于使用ATTACH SQL命令添加的数据库,该名称在AS关键字之后显示。可以使用NULL指针代替“ main”来引用主数据库文件。此例程的第三和第四参数直接传递给xFileControl方法的第二和第三参数。xFileControl方法的返回值成为该例程的返回值。

sqlite3_file_control()的一些操作码由SQLite核心直接处理,从不调用sqlite3_io_methods.xFileControl方法。op参数的SQLITE_FCNTL_FILE_POINTER值导致将指向基础sqlite3_file对象的指针写入第4个参数所指向的空间。该 SQLITE_FCNTL_JOURNAL_POINTER工作,除了它返回同样sqlite3_file与日志文件而不是主数据库相关联的对象。所述SQLITE_FCNTL_VFS_POINTER操作码将指针返回到底层sqlite3_vfs对象的文件。该SQLITE_FCNTL_DATA_VERSION 从寻呼机返回数据版本计数器。

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

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

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