38.2.3. Dotazy na tabulku

K jednotlivým polím výsldku můžeme přistupuvat buď přes index, první pole má index 0, nebo přes jména sloupců které použijeme jako indexy.

val = row[2]
val = row['height']

Pokud neznáme jména sloupců a ani jejich počet, prostě provádíme dotaz na neznámou tabulku, můžeme použít iterační metodu each_with_name

dbh.execute("SELECT * FROM mytable") do |row|
    row.each_with_name do |val, name|
        #... pole name má hodnotu val
        printf "%s: $s, ", name, val.to_s
    end
    print "\n"
end

Pokud potřebujeme zjistit jména polí, například chceme vytvořit tabulku ať již v HTML nebo v prostém textu kde v hlavičce uvedeme jména sloupců a pod nimi hodnoty použijeme FIXME:

FIXME: vyřešit a dopsat příklad
sth = dbh.execute("SELECT f1, f2, f3 FROM mytable ORDER by f1;")
sth.column_info.each ...
sth.each do |row|
    puts "<tr>"
    row.each do |col|
        puts "<td>#{col}</td>"
    end
    row.collect{|fld| "<td>#{fld.to_s}</td>"}.join
    puts "</tr>\n"
end
sth.finish
Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .