我正在使用JDBC ( zxJDBC ) / SQLite在Jython中寻找准备好的语句。我发现的只是这样的例子(书,Jython 文档):
qry = "select continent from country where name = ?"
cursor.executemany(qry,['Austria'])
但是,我始终将准备好的语句理解为一种让数据库优化语句而不知道为占位符插入的值的方法。然后接收到该语句的句柄,该语句已通过优化器传递,并且可以使用不同的值执行此语句,从而节省查询优化工作,因此我希望以下方法更好:
qry = cursor.prepare("SELECT * FROM `table` WHERE `field`=? AND `field2`=?") #usually mor complex queries
qry.execute(cursor, ?, (val1, val2)??) #here is the problem
不幸的是,我找不到如何使用执行的示例,并且缺少文档。
PyStatement.execute(cursor, params, bindings)
你能解释一下我对params
如何使用的猜测bindings
是正确的吗?我对 params 的最佳猜测是,它们是setInt
来自 Javas JDBC 的 -Method (或类似的)的第一个参数,这将是相当令人惊讶的。我希望 Jython 的人手更短,并且只希望参数按正确(从前到后)的顺序排列。
奖励:有没有办法释放结果集?(除了关闭光标)