在sqlite3 Bind中使用Hash with Redundant Items

时间:2014-05-28 09:00:57

标签: ruby sqlite3-ruby

我正在尝试运行INSERT查询,如下所示:

Query = "INSERT INTO t (x,y,z) VALUES (:aval,:bval,:cval)"

使用以下格式,我可以使用哈希来插入实际值:

db.execute(Query,{"aval" => "1", "bval" => "2", "cval" => "3"})

我的问题是这些值已经存在于具有一些冗余值的散列中,例如:

{"aval" => "1", "bval" => "2", "cval" => "3", "dval" => "4"}

由于dval不是必需参数之一,我收到错误 -

SQLite3::Exception: no such bind parameter

当然,我可能错了,错误可能是由于不同的原因造成的。 如果有一种方法可以使用SQLite3克服这个问题,那将会很棒。或者,只有所需参数创建has的“修剪”副本的方法也可以。

1 个答案:

答案 0 :(得分:4)

你应该写为 -

Query = "INSERT INTO t (x,y,z) VALUES (?,?,?)"
hash = {"aval" => "1", "bval" => "2", "cval" => "3"}
db.execute(Query, hash.values_at("aval", "bval", "cval" ))

阅读此execute( sql, *bind_vars ) {|row| ...}文档。