2014-02-28 23 views
1

我一直在玩JDBC驅動程序。我希望得到體驗代碼大師的建議。我想知道這是否是一種很好的方法來查找是否連接到數據庫。如果不是,有人可以讓我知道他們會怎麼做?使用Java和SQL

Connection con = null; 

    try { 
     con = DriverManager.getConnection("jdbc:mysql://localhost/"+database+"?+user="+user+"&password="+password); 
    } catch (SQLException e) { 
     System.out.println(e.getMessage()); 
      if (con != null) { 
       System.out.println("hello"); 
      } else { 
       System.out.println("Not Connected!"); 
      } 
    } 

我真的很感激所有有用的意見。提前謝謝了。

回答

2

如果getConnection方法正常返回,並且沒有拋出異常,那麼就建立了到數據庫的連接。 catch子句中的邏輯是不需要的,因爲如果發生異常,則連接未建立。


返回Connection對象必須是close() d(正如許多JDBC類的絕,如Statement S和ResultSet S代表例子)。假設Java7,一種方便的方法,以確保Connection使用的try-與資源關閉語句:

try (Connection con = DriverManager.getConnection(...)) 
{ 
} 
catch (final SQLException e) 
{ 
} 

正如在評論SnakeDoc指出,這可能在生產系統中是不切實際的,因爲建立與數據庫的連接是一個典型的昂貴的操作。

+0

...這使得它非常不可重用,除非你只需要一個非常小的代碼段的db(這是可能的!) – SnakeDoc

+0

@SnakeDoc,它真的取決於他們在裏面嘗試什麼。例如,可能是一個長時間運行的循環。我的目的是要強調,連接必須關閉,這是一個方便的實現。 – hmjd

+0

另外假設OP沒有停留在Java 6或更早的版本中。 –

1

JDBC API將爲您執行這些檢查。無論何時執行數據庫操作(例如打開連接,執行語句),它都會檢查連接是否有效。如果沒有,它會拋出異常。

例如,方法Connection.createStatement引發以下:

SQLException - 如果發生數據庫訪問錯誤,或者調用此方法關閉的連接上

所有你需要做的是一些基本的異常處理。用try-catch塊圍繞你的JDBC調用是這樣做的一種方式。你也可以拋出異常並在別的地方處理它。

-1

這絕對是一個很好的做法!如果conn無法被初始化,那麼它可能是連接字符串錯誤或數據庫關閉。