【问题标题】:Why does my if is not executing为什么我的 if 没有执行
【发布时间】:2017-07-31 07:49:16
【问题描述】:
ResultSet rs;
System.out.println("rs");
try 
{
    rs = j.getData("select ulevel from user where ulevel='"+eid+"'");
    System.out.println("try");
    //until this point it works properly. But after this point it doesn't work as I thought even though I logged in as a user whose user level (ulevel) is not admin.
    if(rs.next())
    {
       System.out.println("rs.next");
       if(rs.getString(2).equals("Admin"))
       {
          System.out.println("if admin");
          home.setEnabled(true);
          job.setEnabled(true);
          employee.setEnabled(true);
          user.setEnabled(true);
          machine.setEnabled(true);
          branch.setEnabled(true);
      }
        else if(rs.getString(2).equals("user"))
        {
            System.out.println("else if");
            home.setEnabled(true);
            machine.setEnabled(true);
            System.out.println("user can't see");
        }
        else
        {
             System.out.println("else");
        }
    }
} 
catch (Exception ex) 
{
    Logger.getLogger(Home_Page.class.getName()).log(Level.SEVERE, null, ex);
}

}


从上面的代码中,我尝试限制用户级别(ulevel)为用户的普通用户可以看到的页面数。我试过了

jbutton_name.setvisible(false);       
jbutton_name.setEnabled(false)        

也一样。但是它们都不能有效地为普通用户禁用这些按钮。
有人可以帮我吗???提前致谢。

【问题讨论】:

  • 不要扔或抓Exception。查找“SQL注入攻击”。

标签: java mysql resultset


【解决方案1】:

rs.getString(2) 中的 2 是结果列索引(第一列从 1 开始)

但是由于您只从查询中返回一列

select ulevel from user

它不会起作用

根据javadocs

SQLException - 如果 columnIndex 无效;如果数据库访问 发生错误或在关闭的结果集上调用此方法

另外我建议您使用PreparedStatementsetString 来避免连接您的SQL 生成以避免SQL 注入攻击的可能性。

【讨论】:

  • 再次非常感谢您...我会尝试这些.. :)
  • 终于可以找出为什么这个 if 不起作用了。 rs.next()=false 的值。这就是为什么。
【解决方案2】:

我认为查询没有返回结果。如果确实如此,那么 rs.getString(2) 应该抛出异常。

【讨论】:

  • 谢谢。你把我引向了正确的方向。 :) 我的 rs.next() 的值为 false。现在努力使它成为现实。 :)
  • 我是新来的。你能告诉我如果我点击你的回复旁边出现的上箭头是否可以? (我这样做了)
  • 向下箭头下方必须有一个右符号,您可以点击它。如果你找不到它那么它可以:-)
  • 就这么做了。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 2021-06-18
  • 2017-07-02
  • 1970-01-01
相关资源
最近更新 更多