我有一个小的ruby脚本,它收集数据然后将它们保存在哈希中,然后将它们存储在sqlite数据库中。
哈希看起来像这样:
@track = {:name => "Chris Brown", :song => "Sweet Love", :time => "3:20", :album => "Fortune" }
我有一个将此哈希保存到sqlite数据库的方法:
def add_db
db = SQLite3::Database.new("playlist.sqlite")
sql = "INSERT INTO tracks (name, song, time, album)" +
"VALUES(#{@track[:name]}, #{@track[:song]},#{@track[:time]}, #{@track[:album]})"
db.execute(sql)
db.close
end
但是我收到了这个错误:initialize': near "Playlist": syntax error (SQLite3::SQLException)
这是将哈希值保存到sqlite3中的必要方法吗?
答案 0 :(得分:1)
你的问题是你没有引用任何你插入的东西,所以SQLite最终会看到这样的事情:
insert into tracks (name, song, time, album) values (Playlist, ...)
这是无效的SQL。你应该使用占位符:
db.execute(
'insert into tracks (name, song, time, album) values (?, ?, ?, ?)',
@track[:name], @track[:song], @track[:time], @track[:album]
)
您也可以使用ActiveRecord,但对于简单的数据导入脚本来说,这些东西太重了。