【问题标题】:How can I select a value from a database using Ruby and SQLite3?如何使用 Ruby 和 SQLite3 从数据库中选择一个值?
【发布时间】:2016-06-14 17:05:19
【问题描述】:

我在使用 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

如果有人能在这里指出正确的方向,我将不胜感激。

干杯, 詹姆斯

【问题讨论】:

    标签: sql ruby sqlite


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!!这很有帮助,我认为它会像这样简单,但并没有真正理解我在做什么,这很好地解释了它!我会投票给你的答案,但我没有足够的声誉:(
    【解决方案2】:

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

    此外,为了安全起见,您不应将字符串注入 SQL;让图书馆为您处理。

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

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      相关资源
      最近更新 更多