一個網路關係資料庫應用系統是一個三層次結構。用戶機與伺服器採用網路連接,客戶機端應用程式依通訊協定與伺服器端的資料庫程式通訊;資料庫服務程式透過SQL指令與資料庫管理系統通訊。
Java程式與資料庫連線方法有兩種。一種是使用JDBC-ODBC橋接器與資料庫連接,一種是用純Java的JDBC驅動程式實現與資料庫連接。
使用JDBC-ODBC 橋接器與資料庫連接
Java程式使用JDBC-ODBC 橋接器與資料庫連接,Java程式與資料庫通訊的過程是:
先由資料庫應用程式向ODBC驅動管理器發出API調用,ODBC驅動管理器將這個呼叫轉換成向資料庫管理系統的ODBC驅動程式調用,資料庫管理系統又將這個呼叫轉換成對作業系統的資料輸入/輸出調用。最後,作業系統從資料庫中得到實際資料逐級回傳。
資料庫程式設計首先要設定資料來源,在ODBC設定資料來源的步驟如下:
開啟Windows控制面板中的管理工具。對於windows XP:選擇「效能維護」>>「管理工具」>>「資料來源(ODBC)」; 對於windows 2000:選擇「管理工具」>>「資料來源」。
開啟“資料來源”。出現ODBC資料來源管理器對話框,顯示現有的資料來源名稱。
選擇“使用者DSN”,點選“新增”按鈕,出現安裝資料來源驅動程式對話方塊。 Access(*.mdb)資料來源,按一下「完成」按鈕,出現「建立資料來源對話框,鍵入需要建立的資料來源名,並為建立的資料來源選擇資料庫表。
點選資料庫區域的「選擇」按鈕,選擇需要的資料庫表。當需要為資料來源授權存取等級時,按一下“進階”按鈕。設定登入名稱和密碼後,按一下「確定」按鈕,完成Access資料庫在ODBC管理器中的設定。
如果還沒有資料庫表,則需建立資料庫表。
資料來源就是資料庫,在設定了資料來源的基礎上,Java程式要存取資料庫表,也要建立JDBC-ODBC橋接器,讓程式與資料庫連線。以後,程式就可向資料庫傳送SQL語句,處理資料庫傳回的結果。 Java資料庫連接JDBC(Java DataBase Connectivity)由一組以Java語言編寫的類別和介面組成,JDBC是Java程式與資料庫連接API。它能做以下三件事:與某個資料庫建立連線、傳送SQL語句和處理資料庫傳回給資料庫的結果。
呼叫類別方法Class.forName(String s)能建立JDBC-ODBC橋接器。例如,代碼:
try{ Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); }catch(Exception e){}
為Java程式載入了驅動程式。
【範例】說明與資料庫連接的方法connectByJdbcOdbc(),該方法按給定的資料庫URL、使用者名稱和密碼連接資料庫,如果連接成功,方法返回連接對象,連接不成功,則傳回空。
public static connection connectByjdbcOdbc(String url, String username, String password){ Connection con = null; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //載入驅動程式} catchBC (Exception e){catchBC (Exception e){catchBC ( e.printStackTrace(); return null; //連線失敗} try{ con = DriverManager.getConnection(url, username, password); } catch (SQLExceotuib e){ e.printStackTrace(); return null; //連線不成功} return con; //連線成功}
以下程式碼是對connectByJdbcOdbc()方法的一個調用,資料庫連接成功,彈出資料庫連接成功資訊窗,否則彈出資料庫連接不成功資訊窗。
if ((con = connectByJdbcOdbc("jdbc:odbc:redsun", "xia", "1234")) != null){ JoptionPane.showMessageDialog(null, "資料庫連線成功"); try{ con.close(); con = null; } catch (SOLException e){}}else JOptionPane.showMessageDialog(null, "資料庫連線失敗");
用純Java的JDBC驅動程式實作與資料庫連接
Java程式也可以用純Java的JDBC驅動程式實作與資料庫連線。這種方法應用較廣泛,但是需要下載對應的驅動程式包,因為不同的資料庫的連接代碼可能不同,連接不同的資料庫,載入的驅動程式也可能不同。例如,連接SQLServer的驅動程式在www.msdn.com網站下載,有3個套件:msbase.jar,mssqlserver.jar和msutil.jar,並要求將這3個套件放在jdk/jre/lib/ext/目錄下,或在CLASSPATH中設定其放置位置。
使用純Java的JDBC驅動程式實作與資料庫連線的過程如下:
載入驅動程式。有兩種載入驅動程式的方式:
一各是將驅動程式加入到java.lang.System的屬性jdbc.drivers中。這是一個DriverManager類別載入驅動程式類別名稱的列表,表元以冒號分隔。
另一種方式是從相關的網站下載驅動程式後,在程式中利用Class.forName()方法載入指定的驅動程式。例如:
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
建立指定資料庫的URL。資料庫的URL物件類似網路的統一資源定位符,其格式為:
jdbc:subProtocol:subName://hostname:port:Databasename=XXX
其中,subprotocol是某種驅動程式支援的資料庫連線機制;subName 是目前連線機制下的特定名稱;hostName是主機名稱;port是對應的連線連接埠;DatabaseName是要連線的資料庫名稱。例如,以下程式碼可以是一個資料庫的URL:
jdbc:Microsoft:sqlserver://localhost:1433;Databasename=ksinfo
此資料庫的URL說明利用miscrosoft提供的機制,以sqlserve驅動,透過1433埠存取本機上的ksInfo資料庫。
建立連線。驅動程式管理員(DriverManager)的方法getConnection()建立連線。
【範例】說明與資料庫連接的靜態方法connectByJdbc(),該方法按給定的資料庫URL、使用者名稱和密碼連接資料庫,如果連接成功,方法傳回true,連接不成功,則傳回false。
public static Connection conectByJdbc(String url, String username, String password){ Connection con = null; try{ Class.forName( //載入特定的驅動程式"com.microsoft.jdbc.sqlserver.SQLServerDriver"); } catch (Exceptionionion"com.microsoft.jdbc.sqlserver.SQLServerDriver"); } catch (Exceptionion e){ e.printStackTrace(); return null; //連線失敗} try{ con = DriverManage.getConnection(url, username, password); } catch (SQLException e){ e.printStackTrace(); return null; //連線失敗} return con; //連線成功}