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

SQLite C 接口

数据库连接客户端数据

void *sqlite3_get_clientdata(sqlite3*,const char*);
int sqlite3_set_clientdata(sqlite3*, const char*, void*, void(*)(void*));

这些函数用于将一个或多个命名指针与数据库连接关联。调用 sqlite3_set_clientdata(D,N,P,X) 会导致指针 P 使用名称 N 附加到数据库连接 D。随后调用 sqlite3_get_clientdata(D,N) 将返回指针 P 的副本,如果之前没有使用相同 D 和 N 值调用 sqlite3_set_clientdata(),则返回 NULL 指针。名称使用 strcmp() 进行比较,因此区分大小写。

如果 P 和 X 均不为 NULL,则在以下情况发生的第一次时,将使用参数 P 调用析构函数 X

除了在适当的时间调用客户端数据上的析构函数外,SQLite 对客户端数据不做任何操作。客户端数据的预期用途是为包装库提供一种机制来存储有关 SQLite 数据库连接的其他信息。

可以附加到单个数据库连接的不同客户端数据指针(具有不同名称)的数量没有限制(除了可用内存)。但是,实现针对仅具有一个或两个不同客户端数据名称的情况进行了优化。应用程序和包装库不建议每个使用超过一个客户端数据名称。

无法枚举与数据库连接关联的客户端数据指针。N 参数可以被视为一个密钥,以便只有知道密钥的代码才能访问关联的数据。

安全警告:这些接口不应在脚本语言或可能使攻击者能够调用它们的任何其他情况下公开。任何可以调用这些接口的代理都可能控制进程。

数据库连接客户端数据仅适用于 SQLite 3.44.0(2023-11-01)及更高版本。

另请参见:sqlite3_set_auxdata()sqlite3_get_auxdata()

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