c++ - 使用 TCL 编写嵌入式 SQLite 脚本

标签 c++ sqlite tcl

我正在编写一个嵌入 TCL 的 C++ 应用程序,并且为了它的数据库操作,我还在其中嵌入了 SQLite。我希望能够执行以下操作:

  1. 从嵌入式 TCL interpeter 为嵌入式 SQLite 编写 TCL 脚本。
  2. 将 SQLite 连接从嵌入式 TCL 解释器传递到 C++,并在 C++ 中使用它进行数据库操作,反之亦然。

我将不胜感激。

最佳答案

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

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

关于c++ - 使用 TCL 编写嵌入式 SQLite 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46661289/

相关文章:

c++ - 如何在 objective-c 中表达 (5 x 5.4 10-3)

c++ - 在 C++11 中不推荐使用哪些 C++ 习语?

python - 将 python 变量传递给 sql

c++ - 编译 Tcl/tk 时出错

tcl - 读取TCL中的Bash环境变量

c++ - 具有复杂值类型 : confusion with value_type and reference 的迭代器

c++ - 如何使用 Valgrind 和 Qt Creator 调试远程应用程序?

java - SQL 插入 '

sqlite:如何获得组计数

Linux:如何找出我的库的哪个(子)依赖项需要特定的库?