如何使用Ruby和SQLite3从数据库中选择值?

时间:2016-03-02 02:11:10

标签: sql ruby sqlite

我无法使用SQLite3和Ruby从数据库返回单个值。

一些上下文:我有一个人员表,我希望能够查询数据库并找回该表中某人的名字。我正在使用Rubymine和SQLite3 gem。

当我运行此代码时:

name = @db.execute <<-SQL
    SELECT firstname FROM tbl_people WHERE email_address = '#{email_address}';
  SQL
  puts name

我得到以下输出:

{"firstname"=>"james", 0=>"james"}

当我真正想要的输出是:

james

如果有人甚至可以指出我在这里正确的方向,我将非常感激。

干杯, 詹姆斯

2 个答案:

答案 0 :(得分:3)

execute()方法创建结果集,而不仅仅是单个标量值。您需要处理结果集以从中获取单个值。

name.each do |row|
    puts row['firstname']
end

答案 1 :(得分:1)

听起来您想要返回结果集第一行的第一个值,并丢弃所有其他值和行。 Database#get_first_value就是你想要的。

另外,为了安全起见,你不应该在SQL中注入字符串;允许图书馆为您处理。

query = "SELECT firstname FROM tbl_people WHERE email_address = ?;"
name = @db.get_first_value query, email_address
puts name