1

我正在构建一个检查用户角色的程序。当一个按钮被按下时,它使用用户 ID 来查询我们数据库的角色/组表。如果一个人不在角色/组表中,那么他们就是请求者。我有以下代码,想知道为什么最后一条else if语句不起作用。

当我们将一个人设置为请求者时,他们实际上会从角色/组表中删除。所以resultset应该是空的。正确的?

ResultSet rs = stmt.executeQuery(getRolesQuery2.toString());
                try
                {
                    boolean empty = true;
                    while (rs.next())
                    {
                        empty = false;
                        userRole = rs.getInt(1);
                        userGroup = rs.getInt(2);
                        System.out.println("The Users Current Role/Group is: " +userRole+ "/" +userGroup);
                        if(userRole == 4 && userGroup == 1)
                        {
                            userRoleLbl.setText("The User Role/Group is: " +userRole+ "/" +userGroup+ " NDS Administrator");
                        }
                        else if(userRole == 1 && userGroup == 3)
                        {
                            userRoleLbl.setText("The User Role/Group is: " +userRole+ "/" +userGroup+ " Privacy Administrator");
                        }
                        else if(userRole == 1 && userGroup == 5)
                        {
                            userRoleLbl.setText("The User Role/Group is: " +userRole+ "/" +userGroup+ " Security Administrator");
                        }
                        else if(userRole == 1 && userGroup == 7)
                        {
                            userRoleLbl.setText("The User Role/Group is: " +userRole+ "/" +userGroup+ " ORD Administrator");
                        }
                        else if(userRole == 1 && userGroup == 9)
                        {
                            userRoleLbl.setText("The User Role/Group is: " +userRole+ "/" +userGroup+ " OEF-OIF Administrator");
                        }
                        else if(userRole == 1 && userGroup == 11)
                        {
                            userRoleLbl.setText("The User Role/Group is: " +userRole+ "/" +userGroup+ " Surgery Administrator");
                        }
                        else if(userRole == 1 && userGroup == 13)
                        {
                            userRoleLbl.setText("The User Role/Group is: " +userRole+ "/" +userGroup+ " Capri Administrator");
                        }
                        else if(userRole == 3 && userGroup == 15)
                        {
                            userRoleLbl.setText("The User Role/Group is: " +userRole+ "/" +userGroup+ " DART Super User");
                        }
                        //TODO: Add some handling for if the role/group is not present which means they are a requester
                        else if(empty)
                        {
                            userRoleLbl.setText("The User is a Requester");
                        }

                    }
4

3 回答 3

3

因为你有

empty = false;

在你的时间里

您应该在 while 之外检查此值,以便如果您的结果集为空,它将为 true

         try
            {
                boolean empty = true;
                while (rs.next())
                {  
                  //your if else
                }

           if(empty)
              {
                userRoleLbl.setText("The User is a Requester");
              }
           }
于 2013-05-20T21:26:43.643 回答
0

如果 ResultSet 没有结果,则根本不会进入 while() 循环。在进入循环之前,您应该检查没有结果。

于 2013-05-20T21:27:40.560 回答
0

在你的代码中空总是假的,所以它永远不会输入最后一个 if。也许你的意思是保持空=真。

于 2013-05-20T21:34:52.773 回答