2013-05-20 50 views
1

我正在構建一個程序來檢查用戶的角色。當按鈕被按下時,它使用userID來查詢我們數據庫的角色/組表。如果一個人不在角色/組表中,那麼他們就是一個請求者。我有以下代碼,並想知道爲什麼最後的else if語句不起作用。SQL查詢沒有結果我如何告訴用戶在我的程序中

當我們設置一個人作爲一個請求者時,他們被從角色/組表中刪除。所以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"); 
         } 

        } 
+0

在進入while循環時empty已被設置爲false,並且從未再次設置,因此if(empty)永遠不會爲true。 – JamesB

+0

如果沒有結果,它會進入while循環嗎? – AFischbein

+0

我遵循從接受的答案這裏的步驟:http://stackoverflow.com/questions/2938812/how-to-find-out-if-a-java-resultset-obtained-is-empty – DarthOpto

回答

3

因爲你有

empty = false; 

裏面你而

您應該檢查而超出此值,因此,如果您的結果集爲空這將是真正的

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

      if(empty) 
       { 
       userRoleLbl.setText("The User is a Requester"); 
       } 
      } 
+0

刪除'空=假;仍然沒有任何結果。 – DarthOpto

+0

您必須在此時間之外進行檢查,因爲如果您的結果集爲空,它將不會進入while循環 – NullPointerException

+0

非常感謝您的工作。 – DarthOpto

0

如果ResultSet沒有結果,它根本不會進入while()循環。在進入循環之前,您應該檢查沒有結果。

+0

非常感謝。 – DarthOpto

0

在你的代碼中,empty總是false,所以它永遠不會進入最後一個if。也許你打算保持empty = true。

相關問題