我正在使用oracle数据库。我试图访问一个只有一列包含一些名称的表。虽然我已将dept_name_list.getString(“DEPT_NAME”)返回的结果分配给字符串类型变量并返回它,但错误显示“该方法必须返回String类型的结果”。
String get_dept_list()
{
trivialFunctions.establishConnection();
try
{
stmt = conn.createStatement();
sql = "select * from DEPARTMENT_LIST;";
ResultSet dept_name_list = stmt.executeQuery(sql);
if(dept_name_list.next())
{
String name = dept_name_list.getString("DEPT_NAME");
return name;
}
}
catch (SQLException e)
{
System.out.println("Problem in finding the dept_name_list");
}
}
代码有什么问题?我需要访问String名称,这部分是否返回一个String名称dept_name_list.getString("DEPT_NAME");
?
答案 0 :(得分:3)
原始代码:
String get_dept_list()
{
trivialFunctions.establishConnection();
try
{
stmt = conn.createStatement();
sql = "select * from DEPARTMENT_LIST;";
ResultSet dept_name_list = stmt.executeQuery(sql);
if(dept_name_list.next())
{
String name = dept_name_list.getString("DEPT_NAME");
return name;
}
}
catch (SQLException e)
{
System.out.println("Problem in finding the dept_name_list");
}
}
该方法被声明为返回String
。但是,唯一的return
语句位于if
内。您必须确保所有分支return
都是值。这样做的一种方法是在方法结束时return null
:
String get_dept_list()
{
trivialFunctions.establishConnection();
try
{
stmt = conn.createStatement();
sql = "select * from DEPARTMENT_LIST;";
ResultSet dept_name_list = stmt.executeQuery(sql);
if(dept_name_list.next())
{
String name = dept_name_list.getString("DEPT_NAME");
return name;
}
}
catch (SQLException e)
{
System.out.println("Problem in finding the dept_name_list");
}
// In case the table is empty, return null:
return null;
}
顺便说一句 - 您的代码是泄露的陈述 - 您必须关闭stmt
和dept_name_list
。