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

SQLite C 接口

注册虚拟表实现

int sqlite3_create_module(
  sqlite3 *db,               /* SQLite connection to register module with */
  const char *zName,         /* Name of the module */
  const sqlite3_module *p,   /* Methods for the module */
  void *pClientData          /* Client data for xCreate/xConnect */
);
int sqlite3_create_module_v2(
  sqlite3 *db,               /* SQLite connection to register module with */
  const char *zName,         /* Name of the module */
  const sqlite3_module *p,   /* Methods for the module */
  void *pClientData,         /* Client data for xCreate/xConnect */
  void(*xDestroy)(void*)     /* Module destructor function */
);

这些例程用于注册新的虚拟表模块名称。在使用该模块创建新的虚拟表之前,以及在使用该模块的预先存在的虚拟表之前,必须先注册模块名称。

模块名称在由第一个参数指定的数据库连接上注册。模块的名称由第二个参数给出。第三个参数是指向虚拟表模块实现的指针。第四个参数是一个任意的客户端数据指针,当创建或重新初始化新的虚拟表时,它将传递到虚拟表模块的xCreatexConnect方法中。

sqlite3_create_module_v2() 接口有第五个参数,它是一个指向 pClientData 析构函数的指针。当 SQLite 不再需要 pClientData 指针时,SQLite 将调用析构函数(如果它不为 NULL)。如果对 sqlite3_create_module_v2() 的调用失败,也将调用析构函数。sqlite3_create_module() 接口等效于带有 NULL 析构函数的 sqlite3_create_module_v2()。

如果第三个参数(指向 sqlite3_module 对象的指针)为 NULL,则不创建新的模块,并且任何具有相同名称的现有模块都将被删除。

另请参阅:sqlite3_drop_modules()

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