我正在尝试返回变量String authServer
,但我似乎无法做到。
public static String getAuth () {
Connection connection = null;
try {
connection = ConnectionConfig.getConnection();
if (connection != null) {
Statement query = connection.createStatement();
ResultSet rs = query.executeQuery("SELECT auth FROM auth");
while (rs.next()) {
String authServer = rs.getString("auth");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return authServer;
}
}
上面的代码给出了一个未知符号“authServer”的错误。
我做错了什么?
答案 0 :(得分:3)
不要在while循环中声明authServer。它的范围将在while循环之后结束。你需要在while循环之外声明。
public static String getAuth () {
Connection connection = null;
String authServer = "";
.....
然后从while循环中检索结果。
答案 1 :(得分:1)
您在循环中声明authServer,使其在return语句中无法访问。 在连接语句之后声明它,如下所示:
Connection connection = null;
String authServer="";
然后在while循环中使用如下:
while (rs.next()) {
authServer = rs.getString("auth");
}
答案 2 :(得分:1)
由于authServer
在上面的循环中声明,因此当您尝试在return语句中使用它时,它不在范围内。
Java Made Easy有一个很好的overview of variable scope in Java,可以帮助您更好地理解这个问题。
在您的具体情况下,请考虑以下修改以解决此问题:
public static String getAuth () {
// Declare authServer with method scope, and initialize it.
String authServer;
Connection connection = null;
try {
connection = ConnectionConfig.getConnection();
if (connection != null) {
Statement query = connection.createStatement();
ResultSet rs = query.executeQuery("SELECT auth FROM auth");
while (rs.next()) {
// Just assign to authServer here rather than declaring
// and initializing it.
authServer = rs.getString("auth");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return authServer;
}
}