我正在尝试编译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
}
}
}
答案 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;