使用PostgreSQL使用ActiveRecord准备和执行语句

我试图通过使用ActiveRecord的预准备语句插入值。 但是,每次我尝试:

conn = ActiveRecord::Base.connection conn.prepare "SELECT * from sampletable where id = $1" conn.execute 3 

在第二个陈述之后,我得到:

 NoMethodError: undefined method `prepare' for # 

我该怎么办? 我正在运行Rails 3.2.1和Ruby 1.9.2

更新:

我解决了这个问题。 感谢您的回复,但它对PostgreSQL无效。 这样做的方法是:

 stmt = "SELECT * from sampletable where id = $1 and name = $2" values = [ { value: 1}, { value: "henry" } ] 

其中values是一个散列数组,每个都指定一个值,$ 1绑定到第0个散列,$ 2绑定到数组中的第二个散列,依此类推

 con = PG::Connection.new(:dbname => "development_DB") con.prepare("insert", stmt) con.exec_prepared("insert", values) con.close() 

女士们,先生们,这是有效的!

从已编辑的问题正文中复制答案,以便从“未答复”filter中删除此问题:

我解决了这个问题。 感谢您的回复,但它对PostgreSQL无效。 这样做的方法是:

 stmt = "SELECT * from sampletable where id = $1 and name = $2" values = [ { value: 1}, { value: "henry" } ] 

其中values是一个散列数组,每个都指定一个值,$ 1绑定到第0个散列,$ 2绑定到数组中的第二个散列,依此类推

 con = PG::Connection.new(:dbname => "development_DB") con.prepare("insert", stmt) con.exec_prepared("insert", values) con.close() 

女士们,先生们,这是有效的!

〜回答每个alalani