struct sqlite3_vtab { const sqlite3_module * pModule; / *此虚拟表的模块* / int nRef; / *打开游标的数量* / char * zErrMsg; / *来自sqlite3_mprintf()的错误消息* / / *虚拟表实现通常会添加其他字段* / };
每个虚拟表模块实现都使用此对象的子类来描述虚拟表的特定实例。每个子类都将根据模块实现的特定需求进行量身定制。该超类的目的是定义所有模块实现通用的某些字段。
通过将从sqlite3_mprintf()获得的字符串分配给zErrMsg,虚拟表方法可以设置错误消息。该方法应注意 在将新字符串分配给zErrMsg之前,通过调用sqlite3_free()释放任何先前的字符串。将错误消息传递到客户端应用程序之后,该字符串将由sqlite3_free()自动释放,并且zErrMsg字段将被清零。