0

我有这个小的 ruby​​ 脚本,它收集数据,然后将它们保存在哈希中,然后将它们存储在 sqlite db 中。

哈希看起来像这样:

@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 的正确方法吗?

4

1 回答 1

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,但对于简单的数据导入脚本来说,这太重了。

于 2013-01-13T02:49:16.180 回答