我正在尝试运行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的“修剪”副本的方法也可以。
答案 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" ))