我无法使用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
如果有人甚至可以指出我在这里正确的方向,我将非常感激。
干杯, 詹姆斯
答案 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