Ruby,MySQL2:检查结果是否为空

5
我正在使用Ruby中的MySQL2查询数据库。有没有直接的方法来检查查询结果是否为空? 代码如下:
require 'mysql2'
client = Mysql2::Client.new(:host => "localhost", :username => "root")
results = client.query("SELECT * FROM users WHERE group='githubbers'")

1
results.empty? 函数有什么问题吗? - mcfinnigan
1
你确定这个方法存在吗?我收到了以下错误信息:undefined method "empty" for #<Mysql2::Result:0x9a2afcc> - Marco
2
我的错,我以为结果会是一个数组。mysql2 gem文档这里指出有一个count方法 - 你试过了吗? - mcfinnigan
非常感谢:count 工作正常! - Marco
2个回答

11

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?

3
0 == results.size

如果results为空,将返回true。据我所知,没有直接的方法(例如Array#empty?),但您可以使用monkey patch(程序员自行添加、修改某个函数或类的行为)。


2
Ruby 绝对拥有 Array#empty? 方法。http://www.ruby-doc.org/core-2.0/Array.html#method-i-empty-3F - Damien MATHIEU
1
抱歉,这句话有点含糊。我想表达的是:Mysql::Result 没有类似于 Array#empty? 的方法。 :-) - nTraum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接