2012-03-27 52 views
1

我真的:JAVA DB:關機德比不使用下面的方法來關閉我的連接到Java DB工作

public void shutdownDisconnect() { 

    if(connectionExists) { 
     String databaseURL = getDBurl(); 
     dbProperties.put("shutdown", "true"); 
     try { 
      DriverManager.getConnection(databaseURL, dbProperties); 
      System.out.println("success"); 
     } catch (SQLException ex) { 
      //shutdown always results in an SQLException 
      System.out.println(ex); 
      //This exeption is:java.sql.SQLNonTransientConnectionException: DERBY SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: Database 'databasename' shutdown. 
     } 
     connectionExists = false; 
    } 
} 

不執行我的第一個System.out.println打印`噸事情,這意味着嘗試,我得到上面指出的例外。

據我所知「成功關閉總是會導致SQLException」,但這是否意味着try語句不被執行?謝謝你的幫助。

回答

3

您的try區塊否則不會拋出異常。

不幸的是,這是關閉德比的方式。

1

誤差以

DriverManager.getConnection(databaseURL, dbProperties); 

拋出這就是爲什麼:

System.out.println("success"); 

不執行。

System.out.println(ex); 

正在打印

java.sql.SQLNonTransientConnectionException: DERBY SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: Database 'databasename' shutdown. 

所以你看:catch - 阻塞的處理。

如果添加System.out.println("success");作爲catch塊中的第一條語句,它將被打印。