缺少退货声明

时间:2013-12-13 17:31:12

标签: java methods return

我正在尝试编译Java类,但是我收到了这个错误:

BeerBeer:25 missing return statement.

我还应该添加什么?谢谢。

import java.sql.*;
import java.io.*;

public class BeerBeer {

  public static String getBreweryInfo (int Raz_ID) 
  throws SQLException 
  { 
    String sql = 
      "SELECT Nosaukums FROM Alus_razotaji WHERE ID = ?";//vaicajums
    try {
      Connection conn = DriverManager.getConnection("jdbc:default:connection:");
      PreparedStatement apstmt = conn.prepareStatement(sql);
      apstmt.setInt(1, Raz_ID); 
      ResultSet rset = apstmt.executeQuery();// SQL vaicājuma izpildīšana
      if (rset.next()) {
          return rset.getString(1);
      }
      rset.close();
      apstmt.close(); 
    }
    catch (SQLException e) {
      System.err.println(e.getMessage()); //Kļūdu izvadīsana
    } 
  }
}

6 个答案:

答案 0 :(得分:1)

您需要return方法中的内容:

我建议您注册result变量,从ResultSet分配,然后返回。例如:

public static String getBreweryInfo (int Raz_ID) throws SQLException { 
    String result = null;
    String sql = ...
    try {
      ...
      if (rset.next()) {
          result = rset.getString(1);
      }
      ..
    } catch { ... }
    return result;
 }

这样你就确保该方法会有一些输出(如果未达到null语句的主体,则为if <) / p>

答案 1 :(得分:1)

import java.sql.*;
import java.io.*;

public class BeerBeer {
  // Edit to return ResultSet
  public static String getBreweryInfo (int Raz_ID) 
  throws SQLException 
  { 
    String sql = 
      "SELECT Nosaukums FROM Alus_razotaji WHERE ID = ?";//vaicajums
    String toReturn = "";
    try {
      Connection conn = DriverManager.getConnection("jdbc:default:connection:");
      PreparedStatement apstmt = conn.prepareStatement(sql);
      apstmt.setInt(1, Raz_ID); 
      ResultSet rset = apstmt.executeQuery();// SQL vaicājuma izpildīšana
      if (rset.next()) {
          toReturn = rset.getString(1);
          rset.close();
          apstmt.close();
          return toReturn;
      }else{
          return toReturn;
      } 
    }
    catch (SQLException e) {
      System.err.println(e.getMessage()); //Kļūdu izvadīsana
      toReturn = "Exx";
      return toReturn;
    } 
  }
}

你错过了一个返回声明,我在代码中添加了一个,因为你需要一个if。添加其他修复此问题。

答案 2 :(得分:0)

您需要为其他案例添加一个return语句(否则,例外)

 import java.sql.*;
    import java.io.*;

    public class BeerBeer {

      public static String getBreweryInfo (int Raz_ID) 
      throws SQLException 
      { 
        String returnString = "";
        String sql = 
          "SELECT Nosaukums FROM Alus_razotaji WHERE ID = ?";//vaicajums
        try {
          Connection conn = DriverManager.getConnection("jdbc:default:connection:");
          PreparedStatement apstmt = conn.prepareStatement(sql);
          apstmt.setInt(1, Raz_ID); 
          ResultSet rset = apstmt.executeQuery();// SQL vaicājuma izpildīšana
          if (rset.next()) {
              returnString = rset.getString(1);
              return returnString;
          }
    else {
          rset.close();  // else close the result set
          apstmt.close(); 
    return returnString; // You also need to return something if the if statement is false
    }

        }
        catch (SQLException e) {
          System.err.println(e.getMessage()); //Kļūdu izvadīsana
          return returnString;
        } 
      }
    }

答案 3 :(得分:0)

如果此语句返回false,该怎么办?

  if (rset.next()) {
      return rset.getString(1);
  }

那么回归在哪里;代码将如何返回String;

答案 4 :(得分:0)

方法签名public static String getBreweryInfo (int Raz_ID)表示它将返回Object类型String

如果您不需要通过此方法“返回”任何内容,请将签名更改为public static void getBreweryInfo (int Raz_ID)

答案 5 :(得分:0)

编译器希望您的方法返回一些值,而不管任何条件。在您的代码中,您已从数据库返回值,但它基于某些条件:

if (rset.next()) {
 return rset.getString(1); // Will return if the above the Result set has next element
}

但编译器不满意,因为您的代码可能会抛出一些异常,并且上述条件将被绕过,并且您的代码将无法返回任何值。 要解决此问题,请在方法结束时添加以下语句:

// This will make sure you return null value if any exception occurs or result set does not have next element.
    return null;