更新時間:2022-08-17 08:20:17 來源:動力節(jié)點 瀏覽1198次
安裝適當?shù)尿?qū)動程序后,就可以使用 JDBC 建立數(shù)據(jù)庫連接了。
建立 JDBC 連接所涉及的編程相當簡單。這是這些簡單的四個步驟 -
Import JDBC Packages - 將import語句添加到您的 Java 程序以在您的 Java 代碼中導(dǎo)入所需的類。
注冊 JDBC 驅(qū)動程序- 此步驟使 JVM 將所需的驅(qū)動程序?qū)崿F(xiàn)加載到內(nèi)存中,以便它可以滿足您的 JDBC 請求。
Database URL Formulation - 這是創(chuàng)建一個格式正確的地址,指向您希望連接的數(shù)據(jù)庫。
創(chuàng)建連接對象- 最后,編寫對DriverManager對象的getConnection( )方法的調(diào)用以建立實際的數(shù)據(jù)庫連接。
Import語句告訴 Java 編譯器在哪里可以找到您在代碼中引用的類,并放置在源代碼的最開頭。
要使用允許您在 SQL 表中選擇、插入、更新和刪除數(shù)據(jù)的標準 JDBC 包,請將以下導(dǎo)入添加到源代碼
import java.sql.* ; // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support
在使用之前,您必須在程序中注冊驅(qū)動程序。注冊驅(qū)動程序是將Oracle驅(qū)動程序的類文件加載到內(nèi)存中的過程,因此它可以用作JDBC接口的實現(xiàn)。
您只需在您的程序中進行一次注冊。您可以通過以下兩種方式之一注冊驅(qū)動程序。
注冊驅(qū)動程序最常見的方法是使用 Java 的Class.forName()方法,將驅(qū)動程序的類文件動態(tài)加載到內(nèi)存中,然后自動注冊它。這種方法更可取,因為它允許您使驅(qū)動程序注冊可配置和可移植。
以下示例使用 Class.forName() 注冊 Oracle 驅(qū)動程序
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
您可以使用getInstance()方法來解決不兼容的 JVM,但是您必須為兩個額外的異常編寫代碼,如下所示
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
catch(IllegalAccessException ex) {
System.out.println("Error: access problem while loading!");
System.exit(2);
catch(InstantiationException ex) {
System.out.println("Error: unable to instantiate driver!");
System.exit(3);
}
可以用來注冊驅(qū)動程序的第二種方法是使用靜態(tài)DriverManager.registerDriver()方法。
如果您使用的是不兼容 JDK 的 JVM,例如 Microsoft 提供的 JVM,您應(yīng)該使用registerDriver()方法。
以下示例使用 registerDriver() 注冊 Oracle 驅(qū)動程序
try {
Driver myDriver = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
加載驅(qū)動程序后,您可以使用DriverManager.getConnection()方法建立連接。為了便于參考,讓我列出三個重載的 DriverManager.getConnection() 方法 -
獲取連接(字符串網(wǎng)址)
getConnection(字符串 url,屬性道具)
getConnection(字符串 url, 字符串用戶, 字符串密碼)
這里每個表單都需要一個數(shù)據(jù)庫URL。數(shù)據(jù)庫 URL 是指向您的數(shù)據(jù)庫的地址。
制定數(shù)據(jù)庫 URL 是與建立連接相關(guān)的大多數(shù)問題發(fā)生的地方。
我們列出了三種形式的DriverManager.getConnection()方法來創(chuàng)建連接對象。
使用帶有用戶名和密碼的數(shù)據(jù)庫 URL
最常用的 getConnection() 形式要求您傳遞數(shù)據(jù)庫 URL、用戶名和密碼-
假設(shè)您使用的是 Oracle 的瘦驅(qū)動程序,您將為 URL 的數(shù)據(jù)庫部分指定 host:port:databaseName 值。
如果您的 TCP/IP 地址為 192.0.0.1 的主機名為 amrood,并且您的 Oracle 偵聽器配置為偵聽端口 1521,并且您的數(shù)據(jù)庫名稱為 EMP,那么完整的數(shù)據(jù)庫 URL 將是
jdbc:oracle:thin:@amrood:1521:EMP
現(xiàn)在您必須使用適當?shù)挠脩裘兔艽a調(diào)用 getConnection() 方法來獲取Connection對象,如下所示
String URL = "jdbc:oracle:thin:@amrood: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
因此,可以按如下方式創(chuàng)建上述連接
String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);
DriverManager.getConnection() 方法的第三種形式需要一個數(shù)據(jù)庫 URL 和一個 Properties 對象
DriverManager.getConnection(String url, Properties info);
Properties 對象包含一組關(guān)鍵字-值對。它用于在調(diào)用 getConnection() 方法期間將驅(qū)動程序?qū)傩詡鬟f給驅(qū)動程序。
要建立與前面示例相同的連接,請使用以下代碼
import java.util.*;
String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );
Connection conn = DriverManager.getConnection(URL, info);
在 JDBC 程序結(jié)束時,需要顯式關(guān)閉與數(shù)據(jù)庫的所有連接以結(jié)束每個數(shù)據(jù)庫會話。但是,如果您忘記了,Java 的垃圾收集器會在清理陳舊對象時關(guān)閉連接。
依賴垃圾收集,尤其是在數(shù)據(jù)庫編程中,是一種非常糟糕的編程實踐。您應(yīng)該養(yǎng)成使用與連接對象關(guān)聯(lián)的 close() 方法始終關(guān)閉連接的習(xí)慣。
為確保連接已關(guān)閉,您可以在代碼中提供“finally”塊。finally塊總是執(zhí)行,無論是否發(fā)生異常。
要關(guān)閉上面打開的連接,您應(yīng)該調(diào)用 close() 方法,如下所示
conn.close();
顯式關(guān)閉連接可以節(jié)省 DBMS 資源,這將使您的數(shù)據(jù)庫管理員感到高興。如果大家想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的JDBC視頻教程,里面的課程內(nèi)容由淺到深,細致全面,通俗易懂,時候沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助哦。
相關(guān)閱讀