为什么我的if没有执行

时间:2017-03-10 04:41:02

标签: java mysql resultset

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)        

同样。但是对于普通用户来说,禁用这些按钮都无效 有人可以帮帮我吗???提前谢谢。

2 个答案:

答案 0 :(得分:4)

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

但是,因为您只从查询中获得一列

select ulevel from user

它不起作用

根据javadocs

  

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

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

答案 1 :(得分:1)

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