mysql
  • ruby
  • mysql2
  • 2013-07-24 69 views 3 likes 
    3

    我在Ruby中使用MySQL2来查询数据库。什么是直接检查查询结果是否为空的方法? 代码如下:Ruby,MySQL2:检查结果是否为空

    require 'mysql2' 
    client = Mysql2::Client.new(:host => "localhost", :username => "root") 
    results = client.query("SELECT * FROM users WHERE group='githubbers'") 
    
    +1

    '结果有什么问题。空吗?' – mcfinnigan

    +0

    你确定这个方法存在吗?我得到以下错误: '未定义的方法“空”为# Marco

    +1

    我不好,我推测结果将是一个数组。 mysql2 gem文档[here](http://rubydoc.info/gems/mysql2/0.3.13/Mysql2/Result)表明有一个'count'方法 - 你试过了吗? – mcfinnigan

    回答

    6

    Mysql2文档确实很差。但通过检查results的类型,您会注意到它是一个包含3种方法的Mysql2::Result。您感兴趣的是count(或别名size),它将返回结果的行数。

    从这里你可以轻松地检查它是否0

    (results.count == 0) 
    

    另外,您可以打开Mysql2::Result类,并添加方法empty?自己:

    class Mysql2::Result 
        def empty? 
         (count == 0) 
        end 
    end 
    

    然后你可以这样做:

    results.empty? 
    
    2
    0 == results.size 
    

    将返回true如果results是空的。 AFAIK没有直接的方法(如Array#empty?),但你可以猴子补丁。

    +2

    Ruby肯定有'Array#empty?'。 http://www.ruby-doc.org/core-2.0/Array.html#method-i-empty-3F –

    +1

    对不起,这句话有点含糊。我想说:没有与'Array#empty?'进行比较的'Mysql :: Result'方法。 :-) – nTraum

    相关问题