【问题标题】:Can I pass sqlite3 'database' handles when using the TCL sqlite bindings?使用 TCL sqlite 绑定时,我可以传递 sqlite3 'database' 句柄吗?
【发布时间】:2021-11-17 22:58:07
【问题描述】:

sqlite 的 tcl 绑定是如何工作的?看一个示例 sn-p,sqlite3 过程似乎打开了给定的数据库,然后 - 我猜 - 定义了一个过程 db1eval 方法上调度?

sqlite3 db1 ./testdb
db1 eval {CREATE TABLE t1(a int, b text)}

我本来希望我能以某种方式创建一个数据库对象,我可以在其他过程中将其作为参数传递并从proc connect 过程中返回。

【问题讨论】:

  • 你是说你不能那样做吗?您可以将代码发布在不起作用的地方吗?

标签: sqlite tcl


【解决方案1】:

sqlite3 命令创建另一个 Tcl 命令(在 C 中实现,因此正式不是过程),其名称由第一个参数给出。该命令又封装了数据库的连接句柄。

如果要返回句柄,只需返回名称(本例中为db1)。但是你也可以反过来做,让调用者建议使用什么名字。无论哪种方式都有效。

请注意,这个模型在 Tcl 的面向对象编码中的许多其他地方都使用过,调用者通常会建议对象的名称,这在概念上既是句柄又是命令。或者可以告诉对象引擎自己选择一个名称。 (多年来,确切的首选语法一直在变化。)一旦创建了对象,方法调用就会自然而然地用于解析句柄命令的第一个参数。

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    相关资源
    最近更新 更多