2009-05-14 17 views
1
USER = "user" 
PASS = "pass" 

QUERY = "SELECT c1, c2, c3, c4, c5, c6, c7 FROM table" 

SQLITE_SCHEMA = 'c1, c2, c3, c4, c5, c6, c7' 

sqlite_db = SQLite3::Database.new('sqlite.db') 
odbc_db = DBI.connect('DBI:ODBC:database', USER, PASS) 
odbc_db.select_all(QUERY) do |entry| 
    sqlite_db.execute "insert into smnt (" + SQLITE_SCHEMA + ") values ('" + entry[0].to_s + "','" + 
                      entry[1].to_s + "','" + 
                      entry[2].to_s + "','" + 
                      entry[3].to_s + "','" + 
                      entry[4].to_s + "','" + 
                      entry[5].to_s + "','" + 
                      entry[6].to_s + "')" 
    end 

db.execute文字列を書くにはもっとクリーンな方法が必要ですか?初心者のルビースタイルの質問

答えて

4

別にhypoxideの答えのループから、また変数補間を使用することを検討してください:あなたのentry要素が良く、すべてが消毒されていた、または痛み、Bobby Tablesスタイルの世界のために調製することが

sqlite_db.execute "insert into smnt (#{SQLITE_SCHEMA}) 
    values (#{entry.map {|e| "'#{e.to_s}'"}.join(',')})" 

注意。

+2

いまいましい...それを私にビート:) –

+1

*笑*私は全体の豚を行って、全然+のいずれかの使用を避け、それはちょうど私の好みです。 :-P –

+1

私はこれが本当に好きです。私はこのように考えるために自分自身を鍛える必要があります。 – rubynewbie

1

文字列のforループを書くと、コードを数行節約できます。

1

方法について:

" VALUES (#{entry.collect{|e|"'"+e.to_s+"'"}.join(",")})" 
関連する問題