使用 TCL 编写嵌入式 SQLite 脚本



我正在编写一个嵌入TCL的C++应用程序,对于其数据库操作,我还在其中嵌入了SQLite。我希望能够做到以下几点:

  1. 从嵌入式 TCL 交互器为嵌入式 SQLite 编写 TCL 脚本。
  2. 将来自嵌入式 TCL 解释器的 SQLite 连接传递给C++,并在 C++ 中将其用于数据库操作,反之亦然。

我将不胜感激建议。

Tcl 8.6 应该附带一个 SQLite 接口的版本,即sqlite3包。但是,没有(官方)方法可以将包中的数据库连接与C++代码共享;包中根本没有可以从C++调用以获取连接的 API。官方解决方法是从您的C++代码创建另一个连接,这不应该太繁琐,除非您在两种语言绑定中的查询之间做奇怪的混合操作,这是一个非常正常的用例。

您可以通过使用 Tcl_GetCommandInfo() 来检索 Tcl 数据库句柄命令的ClientData字段等来破解它。然后可以将其转换为指向结构的指针,该结构的第一个字段是sqlite3*句柄,就像您使用 sqlite3_open() 获得的一样。这是凌乱脆弱的。此外,您仍然需要遵守通常的规则,例如需要保持单个线程。这真的不是我推荐的!

最新更新