【发布时间】:2013-10-09 12:47:53
【问题描述】:
我正在尝试使用 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 绑定到数组中的第 2 个哈希,依此类推
con = PG::Connection.new(:dbname => "development_DB")
con.prepare("insert", stmt)
con.exec_prepared("insert", values)
con.close()
女士们先生们,这很有效!
【问题讨论】:
-
如果您想将解决方案概括为您自己的答案,我将删除我的答案。 (请参阅meta.stackexchange.com/questions/90263/… 详细说明为什么这会有所帮助。)谢谢!
标签: ruby-on-rails activerecord insert prepared-statement