使用Ruby PG创业板准备的INSERT语句的例子(Example of a prepared I

2019-07-29 15:59发布

做了一些google搜索半天,我无法找到使用PG宝石(红宝石的PostgreSQL GEM)准备的INSERT语句中的任何样品。

我想这(看着宝石文档后):

def test2
    conn = PG.connect( dbname: 'db1' )
    conn.prepare("statement1", 'INSERT INTO table1 (id, name, profile) VALUES (?, ?, ?)')
end

但我得到以下错误:

pgtest.rb:19:in `prepare': ERROR:  syntax error at or near "," (PG::Error)
LINE 1: INSERT INTO table1 (id, name, profile) VALUES (?, ?, ?)
                                                        ^
from pgtest.rb:19:in `test2'
from pgtest.rb:25:in `<main>'

Answer 1:

pg宝石要你使用编号的占位符( $1$2 ,...),而不是位置的占位符( ? ):

conn = PG.connect(:dbname => 'db1')
conn.prepare('statement1', 'insert into table1 (id, name, profile) values ($1, $2, $3)')
conn.exec_prepared('statement1', [ 11, 'J.R. "Bob" Dobbs', 'Too much is always better than not enough.' ])

该精细的手工有这样一段话:

- (PGresult) prepare(stmt_name, sql[, param_types ])
[...]
PostgreSQL的绑定参数被表示为$ 1,$ 1,$ 2等,SQL查询的内部。

并再次exec_prepared

PostgreSQL的绑定参数被表示为$ 1,$ 1,$ 2等,SQL查询的内部。 参数数组的第0个元素绑定到$ 1,所述第一元件被绑定到$ 2等



文章来源: Example of a prepared INSERT statement using ruby pg gem