int sqlite3_create_module( sqlite3 * db,/ * SQLite连接以* /来注册模块 const char * zName,/ *模块名称* / const sqlite3_module * p,/ *模块的方法* / 无效* pClientData / * xCreate / xConnect的客户端数据* / ); int sqlite3_create_module_v2( sqlite3 * db,/ * SQLite连接以* /来注册模块 const char * zName,/ *模块名称* / const sqlite3_module * p,/ *模块的方法* / 无效* pClientData,/ * xCreate / xConnect的客户端数据* / void(* xDestroy)(void *)/ *模块析构函数* / );
这些例程用于注册新的虚拟表模块名称。在使用该模块创建新的虚拟表之前以及在对该模块使用预先存在的虚拟表之前,必须先注册模块名称。
模块名称在第一个参数指定的数据库连接上注册。模块的名称由第二个参数给出。第三个参数是虚拟表模块实现的指针。第四个参数是一个任意的客户端数据指针,当创建或重新初始化新的虚拟表时,该指针将传递到虚拟表模块的xCreate和xConnect方法中。
sqlite3_create_module_v2()接口具有第五个参数,该参数是指向pClientData的析构函数的指针。当SQLite不再需要pClientData指针时,SQLite将调用析构函数(如果它不是NULL)。如果对sqlite3_create_module_v2()的调用失败,则也会调用析构函数。sqlite3_create_module()接口等效于带有NULL析构函数的sqlite3_create_module_v2()。
如果第三个参数(指向sqlite3_module对象的指针)为NULL,则不会创建新模块,并且会删除任何具有相同名称的现有模块。