top
Loading...
建立JDBC數據庫連接實例解析

    連接(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數據庫建立連接的例子。
    【程序源代碼】

1// ==================== Program Description ==========================2// 程序名稱:示例13-1 : DBConnection.java3// 程序目的:建立數據庫連接4// ==============================================================5import java.sql.*;67public class DBConnection 8{9    // 指定驅動程序10    private static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";11    // 創建指定數據庫的URL12    private static String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";13    // 提供用戶名和密碼14    private static String user="sa";15    private static String password="sasa";1617    public static Connection getConnection() {18        Connection con;19        try {20   // 加載驅動程序21           Class.forName(driver);22           // 創建連接23           con = DriverManager.getConnection(url, user, password);24           return con;25        } catch (ClassNotFoundException e) {26            System.out.println(e.getMessage());27        } catch (SQLException e) {28            System.out.println(e.getMessage());29        }30        return null;31    }32}

    【程序注解】
    在創建連接的方法中,調用的是DriverManager類的靜態成員方法getConnection(),3個參數分別為數據庫的URL、用戶名和密碼。

    另外,在連接數據庫的過程中要注意異常的捕獲。在第30行一定要返回一個null值表示數據庫連接失敗,否則程序編譯時會報錯。 (T111)

本文選自飛思圖書《精通Java核心技術》

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗