2012-12-18 167 views
-1

如何處理Msaccess jdbc連接中的sql異常?我正在使用jdbc連接在java.if中的msaccess檢索數據連接失敗我需要顯示自定義消息,而不是拋出異常。如何使用jdbc連接檢查java中的連接狀態?

public static Connection getConnection() { 
    Connection connection=null; 
    try 
    { 
    String url = "jdbc:odbc:db1"; 
    String username = ""; 
    String password = ""; 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    connection= DriverManager.getConnection(url, username, password); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Report"); 
    } 
    return connection; 
    } 

但它不是處理自定義message.its拋出錯誤: 值java.sql.SQLException:[微軟] [ODBC Excel驅動程序] Microsoft Jet數據庫引擎找不到對象

+2

您是否嘗試過捕捉異常? –

回答

1

你在哪裏調用的getConnection的位置,提供自定義的消息有被處理異常:

Connection con = null; 
try { 
    con = DatabaseUtil.getConnection(); 
    ... 
    ... 
}catch(Exception e) { 
    //show message, dialog box, whatever 
} finally { 
    if(con != null) { 
     try{ 
      con.close(); 
     }catch(SQLException sqe){ 
       //yet another message, unable to close connection cleanly. 
     } 
    } 
} 

附:宣佈「Exception」是一個糟糕的主意,你應該總是試着從你的方法中拋出最相關的異常。 SQLException在DatabaseUtil.getConnection中更有意義

P.P.S.的Class.forName(驅動器);每個JVM調用只需要一次(用於JDBC驅動程序註冊)。因此,註冊JDBC驅動程序的適當位置是一個靜態初始化程序(當您的類首次加載時會被調用一次)。

1

你無法避免例外。而是把他們的,你可以通過使用

try{ 
    // do Something 
    } catch(SqlException e){ 
    // catch exception 
    } finally { 
    // do something to get recover 
    } 

For more info follow this link

1

不能避免拋出SQLException處理它們。 JDBC API不提供測試連接活性的方法。

要測試JDBC連接是否仍然有效,請執行簡單查詢。這樣做的「虛擬查詢」習語因數據庫而異,但任何表上的任何查詢都足以滿足要求。如果連接沒有活着,你會得到一個異常......你需要處理。

然而是可能的數據庫連接到你死之間測試的連接,然後進行你的真實的查詢(或其他)。所以(海事組織)你最好只是寫你的代碼,以便它可以在真正的查詢中處理SQLException ......並且不用麻煩探測。這也提供了更好的性能,因爲反覆測試以查看JDBC連接是否存在將會給應用程序和數據庫增加無用的負載。