2013-12-13 136 views
0

我試圖編譯Java類,但是我得到這個錯誤:缺少return語句

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 
    } 
    } 
} 
+3

那麼,錯誤是相當不言自明的,不是嗎? – OldProgrammer

+0

所以 - 當rset.next()返回false或拋出一個'SQLException'時會發生什麼? –

+0

你需要一個返回語句爲if和其他爲什麼 –

回答

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; 
    } 
    } 
} 

你錯過了一個return語句,我添加了一個代碼,你以後如果需要一個。添加一個固定的這個。

+0

我仍然收到BeerBeer:27失蹤報告聲明。 我也越來越BeerBeer:21不可達聲明rset.close(); – user3098591

+0

查看我的上次編輯。我定你上市 – Kyle93

+0

這些錯誤仍然得到BeerBeer:缺少return語句 } ^ – user3098591

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語句體)

0

你需要一些輸出爲其他情況添加return語句(else,exception)

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; 
     } 
     } 
    } 
+0

如果拋出異常? –

+0

我仍然得到BeerBeer:29缺少return語句,還有BeerBeer:22無法訪問的語句rset.close(); – user3098591

+0

編輯我的帖子..再試一次 –

0

如果此語句返回false,該怎麼辦?

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

然後哪裏是回報;代碼將如何返回String;

0

方法簽名public static String getBreweryInfo (int Raz_ID)指出它將返回String類型的Object

如果不需要此方法什麼「返回」,簽名更改爲public static void getBreweryInfo (int Raz_ID)

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;