Ruby中告诉SQLite返回一行的最简单方法是什么?

时间:2015-04-24 09:49:59

标签: ruby sqlite

我是Ruby的新手,我正在使用SQLite。

我已经编写了注册和注销函数,但是我写了一个函数来判断给定用户是否在数据库中注册。

这是当前的代码:

 def registered?(l)
  db = SQLite3::Database.new "database.db"
  db.execute("SELECT user FROM t1 WHERE user = ?, ", l[1])
  end

判断SQLite是否向此查询返回行的最简单方法是什么?

更新

感谢您提供有关如何操作的建议。这是更新的代码:

 def registered?(l)
  db = SQLite3::Database.new "database.db"
  results = db.execute("SELECT user FROM t1 WHERE user = ?, ", l[1])
  !results.empty?
 end

我正在使用它:

  if registered?(@nick)
   ...
  end

但我想这不对,因为registered?(@nick)下的代码在注册@nick时没有被触发。我有两个class User。我做错了吗?

2 个答案:

答案 0 :(得分:0)

响应不应该是一个空数组:

res = db.execute("SELECT user FROM t1 WHERE user = ?, ", l[1])
if !res.empty?
 # some row is returned
end

答案 1 :(得分:0)

执行的结果是一个数组(SQLite3::Execute):

class User
  def registered?
    db = SQLite3::Database.new "database.db"
    results = db.execute("SELECT user FROM t1 WHERE user = ?, ", self)
    !results.empty?
  end
end

然后你说@user.registered?