Java相当新,我想更好地理解一些事情。我知道try / catch语句变量只在该语句中有作用域。我正在尝试学习java db sql并遇到了一个问题。
final String DB_URL = "jdbc:derby://localhost:1527/Customers";
Connection conn = DriverManager.getConnection(DB_URL);
这将创建与我的数据库的连接。我需要在try / catch语句中使用它。我想在程序结束时再次访问conn变量以关闭连接。我试图在我的程序的顶部声明这个变量,但它不会让我,因为它需要try / catch。解决这个问题的最佳方法是什么?
如下所示,我将其创建为变量。我试图用我的退出按钮关闭连接,但代码没有被执行。使用if语句,程序不会关闭,也不会触发System.out.print消息。连接开始正常,但没有关闭。
if (conn != null){
conn.close();
System.out.println("Connection Closed");
System.exit(0);}
答案 0 :(得分:1)
你可以通过在try / catch块之外声明Connection对象来实现, 并在try {}
中创建它final String DB_URL = "jdbc:derby://localhost:1527/Customers";
Connection conn = null;
try {
conn = DriverManager.getConnection(DB_URL);
} catch(Exception e) {
System.out.println("Exception "+e);
}
答案 1 :(得分:0)
解决方案是将变量声明与其实例化分开。在课程的顶部,输入声明:
Connection conn = null;
然后你可以将实例化放在try / catch块中。
try {
conn = DriverManager.getConnection(DB_URL);
}
catch (SQLException exception) {
// Handle error.
}
最后,当你清理时,添加一个空检查。
if (conn != null) {
conn.close();
}
答案 2 :(得分:0)
您应该在try块
之外声明connection
变量
Connection conn = null;
try {
conn = Connection conn = DriverManager.getConnection(url)
} catch (SQLException e) {//log exception}
在你的程序结束时,你可以像这样关闭它
if (conn != null) {
try{conn.close();}
catch(Exception e) {//log exception}
}
从Java 7开始,您可以使用try with resource
,它会自动释放资源,但变量conn只能在try块中访问。
try (Connection conn = DriverManager.getConnection(url)) {
System.out.println("Connecting...");
System.out.println("Connected");
} catch (SQLException e) {
//log exception
}