我是一个新手。我有一个名为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,等)确实包含价值观。我的语法出了什么问题?
答案 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)
(我可能在那里搞砸了)。