无法使用ruby库将行插入sqlite3数据库

时间:2011-05-26 15:39:32

标签: ruby sqlite

我是一个新手。我有一个名为OUTPUTS的数据库,其中所有列都是整数类型。我试图使用以下ruby脚本在OUTPUTS中插入一行:

require 'rubygems'
require 'sqlite3'
...
db=SQLite3::Database.new("development.sqlite3")
db.execute( "INSERT into OUTPUTS (user_id,eac,pac,vac,iac,epv,ppv,vpv) VALUES (10,@eac,@pac,@vac,@iac,@epv,@ppv,@vpv);" )

运行此脚本后,我确实得到一个新行,user_id列中有一个10,如果预期的话,其余的列都是空的,即使我验证了所有变量(@eac,@ pac,等)确实包含价值观。我的语法出了什么问题?

1 个答案:

答案 0 :(得分:2)

您要将变量的名称发送到sqlite,而不是它们的值。这就是你想要的:

db.execute( "INSERT into OUTPUTS (user_id,eac,pac,vac,iac,epv,ppv,vpv)
VALUES (10,#{@eac},#{@pac},#{@vac},#{@iac},#{@epv},#{@ppv},#{@vpv});" )

但更好的方法是使用这样的变量绑定:

db.execute( "INSERT into OUTPUTS (user_id,eac,pac,vac,iac,epv,ppv,vpv) 
VALUES (10,?,?,?,?,?,?,?)",
@eac,@pac,@vac,@iac,@epv,@ppv,@vpv)

(我可能在那里搞砸了)。

查看How do I use placeholders in an SQL statement?了解更多详情。