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

时间:2012-12-19 20:54:25

标签: ruby-on-rails activerecord insert prepared-statement

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

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

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

NoMethodError: undefined method `prepare' for
#<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x000001027442c8>

我该怎么办?我正在运行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()

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

1 个答案:

答案 0 :(得分:4)

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

  

我解决了这个问题。感谢您的回复,但它没有用   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

回答