連接(Connection)是一個代表與數據庫進行的程序連接的對象。通過連接,可以執行SQL語句、返回數據庫操作結果等。
創建指定數據庫的URL
要建立與數據庫的連接,首先要創建指定數據庫的URL。連接通常是通過數據庫的URL對象,利用DriverManager的getConnection方法建立的。數據庫URL對象與網絡資源的統一資源定位類似,其構成格式如下: jdbc:subProtocol:subName://hostname:port; DatabaseName=XXX
其中:
jdbc表示當前通過Java的數據庫連接進行數據庫訪問。
subProtocol表示通過某種驅動程序支持的數據庫連接機制。
subName表示在當前連接機制下的具體名稱。
hostname表示主機名。
port表示相應的連接端口。
DatabaseName是要連接的數據庫的名稱。
按照上述構造規則,可以構造如下類型的數據庫URL:
jdbc:microsoft:sqlserver ://localhost:1433;DatabaseName=test
該數據庫URL表示利用Microsoft提供的機制,選擇名稱為sqlserver的驅動通過1433端口訪問本機上的test數據庫。
加載驅動程序
DriverManager 類包含一列 Driver 類,它們已通過調用方法DriverManager. registerDriver 對自己進行了注冊。所有 Driver類都必須包含一個靜態部分。它創建該類的實例,然后在加載該實例時 DriverManager 類進行注冊。這樣,用戶在正常情況下將不會直接調用 DriverManager.registerDriver,而是在加載驅動程序時由驅動程序自動調用。
在JDBC中,通常有兩種加載驅動程序的方式。
一種是將驅動程序添加到 java.lang.System 的屬性 jdbc.drivers 中。這是一個由 DriverManager 類加載的驅動程序類名的列表,用冒號分隔。在JDBC的java.sql. DriverManager類初始化時,在JVM的系統屬性中搜索jdbc.drivers字段的內容。如果存在以冒號分隔的驅動程序名稱,則DriverManager類加載相應的驅動程序。
另一種方式是在程序中利用Class.forName()方法加載指定的驅動程序,如:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
這將顯式地加載驅動程序類。由于這與外部設置無關,因此推薦使用這種加載驅動程序的方法。
在以上兩種情況中,新加載的 Driver 類都要通過調用 DriverManager.registerDriver類進行自我注冊。
實例:建立數據庫連接
加載 Driver 類并在 DriverManager 類中注冊后,它們即可用來與數據庫建立連接。當調用 DriverManager.getConnection 方法發出連接請求時,DriverManager 將檢查每個驅動程序,查看它是否可以建立連接。創建數據庫連接時需要提供數據庫的URL和驅動類型,并提供訪問數據庫的用戶名和密碼。如果有多個 JDBC 驅動程序可以與給定的 URL 連接,DriverManager 將輪流在每個驅動程序上調用方法 Driver.connect,并向它們傳遞用戶開始傳遞給方法 DriverManager.getConnection 的 URL 對驅動程序進行測試,然后連接第一個可以成功連接到給定 URL 的驅動程序。示例13-1是一個用來與SQL Server數據庫建立連接的例子。
【程序源代碼】
【程序注解】
在創建連接的方法中,調用的是DriverManager類的靜態成員方法getConnection(),3個參數分別為數據庫的URL、用戶名和密碼。
另外,在連接數據庫的過程中要注意異常的捕獲。在第30行一定要返回一個null值表示數據庫連接失敗,否則程序編譯時會報錯。 (T111)
本文選自飛思圖書《精通Java核心技術》