-1

下面是一个在存在用户时应该返回 true 的方法(在尝试删除用户之前进行的测试)。但它没有返回任何东西。我

   def is_user?(user_name)
     puts "Checking if #{user_name} exists: "
     select_sql = <<-EOF
      SELECT COUNT(*)
      FROM all_users
      WHERE username = upper('#{user_name}')
     EOF

    select_stmt = @conn.create_statement
    result_set = select_stmt.execute_query(select_sql)
    count = Array.new

    while(result_set.next)
      count = result_set.getInt(1)
    end
    result_set.close()
    select_stmt.close()

    if (count > 0)
       #puts "#{count}" <---- This prints 1           
       return true
    else
       return false
    end
 end

创建连接对象后,我正在调用此方法并且它不返回任何内容。连接已成功建立。我试过了,return count但它也没有返回任何东西。谁能帮我找出问题所在?

谢谢。

4

1 回答 1

0

为什么不使用:

(count > 0)

本身而不是:

if (count > 0)
   #puts "#{count}" <---- This prints 1           
   return true
else
   return false
end

它做同样的事情,并且是惯用的 Ruby。

我还强烈建议您使用Sequel ORM 来满足您的数据库连接需求。它写得非常好,可移植。

建立与数据库的连接后,您可以使用它来替换您的代码:

def is_user?(user_name)
  DB[:users].where(:username => user_name.upcase).count > 0
end
于 2013-09-24T17:04:54.783 回答