编译错误:缺少return语句

时间:2012-03-03 04:22:20

标签: java compiler-errors

我有一个方法,它将字符串值作为参数,然后检查数据库中是否存在该字符串值!如果字符串值已经存在,则该方法应返回true,否则返回false!在我运行该方法之前,我收到编译错误“缺少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

3 个答案:

答案 0 :(得分:6)

如果执行没有传递给if语句和/或while循环怎么办?这种情况没有返回值。使用布尔变量或false值返回。只需在此行return false;后添加dBConnection.disconnect();语句,即在 try block 的if语句中的while循环之后,即可完成。

顺便提一下,我建议您在finally子句中使用数据库断开连接语句,而不是在try块中。如果您的方法在while循环内返回任何值,则dBConnection.disconnect();很可能不会被执行。将此行dBConnection.disconnect();移动到catch块后面的finally块,如下所示:

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

答案 1 :(得分:1)

如果if语句if(dBConnection.connect())返回false,则该方法没有return语句。你可以添加一个finally语句,也可以只输入一个else来返回你想要的值

答案 2 :(得分: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