2012-03-03 20 views
1

パラメータとして文字列値を受け取り、その文字列値がデータベースに存在するかどうかを確認するメソッドがあります。このメソッドは、文字列値がすでに存在する場合はtrueを返し、そうでない場合はfalseを返します。私がメソッドを実行する前に、コンパイルエラー "return statementが見つからない"が表示されます。誰かが以下のコードでエラーを見つけますか?コンパイルエラー:return文がありません

public boolean checkID(String sid) 
{ 
    try 
    { 
     String sessionID = null; 
     if(dBConnection.connect()) 
     { 
      Connection con = dBConnection.getConnection(); 
      String query = "SELECT sidvalue FROM sessionid where tokenvalue='" + sid + "'"; 
      Statement pstmt = con.createStatement(); 
      ResultSet resultset = pstmt.executeQuery(query); 

      while (resultset.next()) 
      { 
       sessionID = resultset.getString(1); 
       if(sid.equalsIgnoreCase(sessionID)) 
       { 
        return true; 
       } 
       else 
       { 
        return false; 
       } 
      } 
      dBConnection.disconnect();  
     }//End of If statement 

    }//End of Try block 
    catch (Exception e) 
    { 
     System.out.println(e); 
     return false; 
    } 
}//End of method 

答えて

6

実行がif文および/またはwhileループに渡されない場合はどうなりますか?そのような場合の戻り値はありません。ブール変数またはfalse値を使用して戻ります。この行の後にreturn false;ステートメントを追加すると、のブロックのifステートメント内のwhileループの後に実行されます。

ちなみに、tryブロック内ではなく、finally節にデータベース接続解除文を使用することをお勧めします。メソッドがwhileループ内の値を返す場合は、dBConnection.disconnect();が実行されない可能性があります。最終的にはちょうどこのようなcatchブロックの後にブロックするには、このラインdBConnection.disconnect();を移動:

try 
{ 
... 
} 
catch(Exception e) 
{ 
... 
} 
finally 
{ 
    dBConnection.disconnect(); 
} 
+0

デフォルトブール値とはどういう意味ですか?ありがとう – Xris

+0

@Xris私の編集を参照してください。 – Juvanis

+0

whileループの後に** return false **を追加すると、同じエラーが表示されます! – Xris

1

を文は、IF(dBConnection.connect())は、falseを返した場合、メソッドにはreturn文がない場合。 finallyステートメントを追加するか、必要な値を返す場合はelseを添付することができます

0

以下のコードを試してみてください。問題を解決する必要があります:

public boolean checkID(String sid) { 
    try { 
     String sessionID = null; 
     if(dBConnection.connect()) { 
      Connection con = dBConnection.getConnection(); 
      String query = "SELECT sidvalue FROM sessionid where tokenvalue='" + sid + "'"; 
      Statement pstmt = con.createStatement(); 
      ResultSet resultset = pstmt.executeQuery(query); 
      while (resultset.next()) { 
       sessionID = resultset.getString(1); 
       if(sid.equalsIgnoreCase(sessionID)) { 
        return true; 
       } else { 
        return false; 
       } 
      }   
     } else { 
      return false; 
     } 
    } catch (Exception e) { 
     System.out.println(e); 
     return false; 
    } 

    finally { 
     dBConnection.disconnect();  
    } 
}//End of method 
+0

もしそうなら、私は驚くだろう。これはコンパイルされますか? –

+0

コンパイルが正常に完了しました! –

+0

ああ、私はあなたがそれを修正したと思う。 –