初始化变量错误Java
我试图从Java内部的SQL语句打印一些结果,我收到一个错误,说这些变量需要初始化,但我不确定如何执行此操作,除了将它们设置为null(这不是我想要做的),我的错误是在尝试关闭初始化变量错误Java,java,sql,Java,Sql,我试图从Java内部的SQL语句打印一些结果,我收到一个错误,说这些变量需要初始化,但我不确定如何执行此操作,除了将它们设置为null(这不是我想要做的),我的错误是在尝试关闭st时,rs和con,系统会提示我初始化变量,但这只是将它们设置为null,以下是我到目前为止的代码: public static void copyFolder(File src, File dest) throws IOException { Connection con; Statement
st
时,rs
和con
,系统会提示我初始化变量,但这只是将它们设置为null
,以下是我到目前为止的代码:
public static void copyFolder(File src, File dest)
throws IOException {
Connection con;
Statement st;
ResultSet rs;
try {
con = DriverManager.getConnection("removed as it houses sensitive data");
st = con.createStatement();
String s = "SELECT Code FROM dbo.\"FK Facades$Dimension Value\" WHERE [Dimension Code] = 'PROJECT'";
rs = st.executeQuery(s);
while (rs.next()) {
rs.getString(1);
System.out.print(rs);
}
} catch (Exception e) {
System.out.println("No connectarino");
} finally {
try {
st.close();
rs.close();
con.close();
} catch (Exception e) {
System.out.println("No");
}
}
}
您需要初始化
con
、st
和rs
,因为例如,如果try块中的第一行失败,您将没有这些变量的值,因此它无法执行finally块,这就是您获得此编译失败的原因
因此,它应该是:
Connection con = null;
Statement st = null;
ResultSet rs = null;
...
try {
if (rs != null)
rs.close();
if (st != null)
st.close();
if (con != null)
con.close();
} catch (Exception e) {
System.out.println("No");
}
NB:关闭语句前的结果集除了前面已经说过的内容之外,您还应该开始这样使用:
try (Connection con = DriverManager.getConnection("removed as it houses sensitive data");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("...")) {
// your code here
}
这会自动为您关闭实例,甚至会正确处理角落案例(即
close()
中的异常)。考虑使用来管理连接、语句和结果集是的,我曾尝试将每个变量设置为null,但运气不好,现在将尝试语句的另一部分,谢谢我在我这方面进行了测试,对于我在回答中提出的问题,我不再有任何编译错误。我试图实现您的建议,但它导致了我的其他错误,在我的代码中进一步使用else语句,我现在使用try with resources使用第一个答案修复了此问题,不过感谢您的帮助!非常感谢,我已经在我的代码中实现了这一点,并进行了相关的更改,我现在没有收到任何错误,仍然不会连接到数据库,这可能是由于完全不同的原因,但再次感谢您解决了此问题!