我是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
。我做错了吗?
答案 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?