Ошибка компиляции: отсутствует оператор возврата - PullRequest
1 голос
/ 03 марта 2012

У меня есть метод, который принимает строковое значение в качестве параметра и затем проверяет, существует ли это строковое значение в базе данных!Метод должен возвращать true, если строковое значение уже существует, и false в противном случае!Перед запуском метода я получаю сообщение об ошибке компиляции "отсутствует оператор возврата"!Кто-нибудь замечает ошибку в коде ниже?

 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 ]

6 голосов
/ 03 марта 2012

Что если выполнение не передается оператору if и / или циклу while? Для таких случаев нет возвращаемого значения. Используйте логическую переменную или false значение для возврата. Просто добавьте оператор return false; после этой строки dBConnection.disconnect();, то есть после цикла while внутри оператора if вашего блока try , это будет сделано.

Кстати, я предлагаю вам использовать оператор отключения базы данных в предложении finally, а не внутри блока try. Вероятно, что dBConnection.disconnect(); не будет выполнено, если ваш метод вернет какое-либо значение внутри цикла while. Переместите эту строку dBConnection.disconnect(); в блок finally сразу после блока catch:

try
{
...
}
catch(Exception e)
{
...
}
finally
{
   dBConnection.disconnect();   
}
1 голос
/ 03 марта 2012

Если оператор if, if (dBConnection.connect ()), возвращает false, то для метода нет оператора возврата.Вы можете либо добавить оператор finally, либо просто присоединить else к if, возвращая желаемое значение

0 голосов
/ 03 марта 2012

Попробуйте приведенный ниже код.Это должно решить вашу проблему:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...