我有一个方法,它将字符串值作为参数,然后检查数据库中是否存在该字符串值!如果字符串值已经存在,则该方法应返回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
答案 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