為了連接到數(shù)據(jù)庫系統(tǒng),我們需要在程序中注冊數(shù)據(jù)庫系統(tǒng)的驅(qū)動程序。
驅(qū)動程序名稱與數(shù)據(jù)庫系統(tǒng)相關。
注冊驅(qū)動程序的最常見方法是使用Java的Class.forName()方法將驅(qū)動程序的類文件加載到內(nèi)存中,并自動注冊它。
try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch(ClassNotFoundException ex) { System.out.println("Error: unable to load driver class!"); System.exit(1); }
加載驅(qū)動程序后,我們可以使用DriverManager.getConnection()方法打開一個連接。
有三個重載的DriverManager.getConnection()方法:
getConnection(String url)
getConnection(String url,Properties prop)
getConnection(String url,String user,String password)
數(shù)據(jù)庫URL是指向數(shù)據(jù)庫的地址。
下表列出了一些常見的JDBC驅(qū)動程序名稱和數(shù)據(jù)庫URL。
RDBMS | RDBMS... | 網(wǎng)址格式 |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://hostname/databaseName |
ORACLE | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@ hostname:port Number:databaseName |
DB2 | COM.ibm.db2.jdbc.net.DB2Driver | jdbc:db2: hostname:port Number / databaseName |
Sybase | com.sybase.jdbc.SybDriver | jdbc:sybase:Tds: hostname:port Number / databaseName |
以下代碼顯示如何使用Oracle的thin驅(qū)動程序及其對應的URL。
該代碼假定有Oracle數(shù)據(jù)庫在192.0.0.1 IP地址上運行,端口為1521。
數(shù)據(jù)庫名稱為EMP。
jdbc:oracle:thin:@192.0.0.1:1521:EMP
以下代碼顯示如何將URL值和用戶名和密碼傳遞到getConnection()方法來獲取一個Connection對象。
String URL = "jdbc:oracle:thin:@192.0.0.1:1521:EMP"; String USER = "username"; String PASS = "password" Connection conn = DriverManager.getConnection(URL, USER, PASS);
DriverManager.getConnection()方法的第二種形式只需要一個數(shù)據(jù)庫URL:
DriverManager.getConnection(String url);
要使用上面的方法,我們必須將用戶名和密碼嵌入數(shù)據(jù)庫URL。這里是一個一般形式:
jdbc:oracle:driver:username/password@database
我們可以重寫示例如下:
String URL = "jdbc:oracle:thin:username/password@192.0.0.1:1521:EMP"; Connection conn = DriverManager.getConnection(URL);
DriverManager.getConnection()方法的第三種形式需要一個數(shù)據(jù)庫URL和一個Properties對象:
DriverManager.getConnection(String url, Properties info);
Properties對象包含一組關鍵字 - 值對。
以下代碼顯示如何使用URL和Properties對象來創(chuàng)建與Oracle數(shù)據(jù)庫的相同連接。
String URL = "jdbc:oracle:thin:@192.0.0.1:1521:EMP"; Properties info = new Properties( ); info.put( "user", "username" ); info.put( "password", "password" ); Connection conn = DriverManager.getConnection(URL, info);
在退出JDBC應用程序之前,我們需要顯式關閉與數(shù)據(jù)庫的所有連接,以結(jié)束每個數(shù)據(jù)庫會話。
為了確保連接關閉,在finally塊中放置close()方法,因為finally塊始終執(zhí)行,而不管異常是否發(fā)生。
要關閉上面打開的連接,請從Connection對象調(diào)用close()方法如下:
} finally { // finally block used to close resources try { if (stmt != null) stmt.close(); } catch (SQLException se2) { } try { if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } }
更多建議: