0

データを収集してハッシュに保存し、sqlite dbに保存するこの小さなrubyスクリプトがあります。

ハッシュは次のようになります。

@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 に答える