jdbc有什么用途
JDBC是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成,那么你對JDBC了解多少呢?下面就讓學(xué)習(xí)啦小編來給你科普一下什么是jdbc。
jdbc的定義
有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBC API,就不必為訪問Sybase數(shù)據(jù)庫專門寫一個(gè)程序,為訪問Oracle數(shù)據(jù)庫又專門寫一個(gè)程序,或?yàn)樵L問Informix數(shù)據(jù)庫又編寫另一個(gè)程序等等,程序員只需用JDBC API寫一個(gè)程序就夠了,它可向相應(yīng)數(shù)據(jù)庫發(fā)送SQL調(diào)用。同時(shí),將Java語言和JDBC結(jié)合起來使程序員不必為不同的平臺編寫不同的應(yīng)用程序,只須寫一遍程序就可以讓它在任何平臺上運(yùn)行,這也是Java語言“編寫一次,處處運(yùn)行”的優(yōu)勢。
Java數(shù)據(jù)庫連接體系結(jié)構(gòu)是用于Java應(yīng)用程序連接數(shù)據(jù)庫的標(biāo)準(zhǔn)方法。JDBC對Java程序員而言是API,對實(shí)現(xiàn)與數(shù)據(jù)庫連接的服務(wù)提供商而言是接口模型。作為API,JDBC為程序開發(fā)提供標(biāo)準(zhǔn)的接口,并為數(shù)據(jù)庫廠商及第三方中間件廠商實(shí)現(xiàn)與數(shù)據(jù)庫的連接提供了標(biāo)準(zhǔn)方法。JDBC使用已有的SQL標(biāo)準(zhǔn)并支持與其它數(shù)據(jù)庫連接標(biāo)準(zhǔn),如ODBC之間的橋接。JDBC實(shí)現(xiàn)了所有這些面向標(biāo)準(zhǔn)的目標(biāo)并且具有簡單、嚴(yán)格類型定義且高性能實(shí)現(xiàn)的接口。
Java 具有堅(jiān)固、安全、易于使用、易于理解和可從網(wǎng)絡(luò)上自動(dòng)下載等特性,是編寫數(shù)據(jù)庫應(yīng)用程序的杰出語言。所需要的只是 Java應(yīng)用程序與各種不同數(shù)據(jù)庫之間進(jìn)行對話的方法。而 JDBC 正是作為此種用途的機(jī)制。
JDBC 擴(kuò)展了 Java 的功能。例如,用 Java 和 JDBC API 可以發(fā)布含有 applet 的網(wǎng)頁,而該 applet 使用的信息可能來自遠(yuǎn)程數(shù)據(jù)庫。企業(yè)也可以用 JDBC 通過 Intranet 將所有職員連到一個(gè)或多個(gè)內(nèi)部數(shù)據(jù)庫中(即使這些職員所用的計(jì)算機(jī)有 Windows、 Macintosh 和UNIX 等各種不同的操作系統(tǒng))。隨著越來越多的程序員開始使用Java 編程語言,對從 Java 中便捷地訪問數(shù)據(jù)庫的要求也在日益增加。
MIS管理員們都喜歡 Java 和 JDBC 的結(jié)合,因?yàn)樗剐畔鞑プ兊萌菀缀徒?jīng)濟(jì)。企業(yè)可繼續(xù)使用它們安裝好的數(shù)據(jù)庫,并能便捷地存取信息,即使這些信息是儲存在不同數(shù)據(jù)庫管理系統(tǒng)上。新程序的開發(fā)期很短。安裝和版本控制將大為簡化。程序員可只編寫一遍應(yīng)用程序或只更新一次,然后將它放到服務(wù)器上,隨后任何人就都可得到最新版本的應(yīng)用程序。對于商務(wù)上的銷售信息服務(wù), Java 和JDBC 可為外部客戶提供獲取信息更新的更好方法。
jdbc的用途
簡單地說,JDBC 可做三件事:與數(shù)據(jù)庫建立連接、發(fā)送 操作數(shù)據(jù)庫的語句并處理結(jié)果。下列代碼段給出了以上三步的基本示例:
Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login",
"password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
上述代碼對基于JDBC的數(shù)據(jù)庫訪問做了經(jīng)典的總結(jié),當(dāng)然,在本小節(jié)的后續(xù)部分會(huì)對它做詳盡的分析講解。
jdbc的一致性
結(jié)構(gòu)化查詢語言(SQL) 是訪問關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。困難之處在于:雖然大多數(shù)的 DBMS (數(shù)據(jù)庫管理系統(tǒng))對其基本功能都使用了標(biāo)準(zhǔn)形式的 SQL,但它們卻不符合最近為更高級的功能定義的標(biāo)準(zhǔn) SQL 語法或語義。例如,并非所有的數(shù)據(jù)庫都支持儲存程序或外部連接,那些支持這一功能的數(shù)據(jù)庫又相互不一致。人們希望 SQL 中真正標(biāo)準(zhǔn)的那部份能夠進(jìn)行擴(kuò)展以包括越來越多的功能。但同時(shí) JDBC API 又必須支持現(xiàn)有的 SQL。
JDBC API 解決這個(gè)問題的一種方法是允許將任何查詢字符串一直傳到所涉及的 DBMS驅(qū)動(dòng)程序上。這意味著應(yīng)用程序可以使用任意多的 SQL 功能,但它必須冒這樣的風(fēng)險(xiǎn):有可能在某些 DBMS 上出錯(cuò)。事實(shí)上,應(yīng)用程序查詢甚至不一定要是 SQL,或者說它可以是個(gè)為特定的 DBMS 設(shè)計(jì)的 SQL 的專用派生物(例如,文檔或圖象查詢)。
JDBC 處理 SQL 一致性問題的第二種方法是提供 ODBC 風(fēng)格的轉(zhuǎn)義子句,這將在后續(xù)部分中討論。轉(zhuǎn)義語法為幾個(gè)常見的 SQL 分歧提供了一種標(biāo)準(zhǔn)的 JDBC 語法。例如,對日期文字和已儲存過程的調(diào)用都有轉(zhuǎn)義語法。
對于復(fù)雜的應(yīng)用程序,JDBC 用第三種方法來處理 SQL 的一致性問題它利用 DatabaseMetaData 接口來提供關(guān)于 DBMS 的描述性信息,從而使應(yīng)用程序能適應(yīng)每個(gè) DBMS 的要求和功能。
由于 JDBC API 將用作開發(fā)高級數(shù)據(jù)庫訪問工具和 API 的基礎(chǔ) API,因此它還必須注意其所有上層建筑的一致性。"符合JDBC標(biāo)準(zhǔn)TM" 代表用戶可依賴的 JDBC 功能的標(biāo)準(zhǔn)級別。要使用這一說明,驅(qū)動(dòng)程序至少必須支持 ANSI SQL-2 Entry Level(ANSI SQL-2 代表美國國家標(biāo)準(zhǔn)局1992 年所采用的標(biāo)準(zhǔn)。Entry Level代表SQL功能的特定清單)。驅(qū)動(dòng)程序開發(fā)人員可用 JDBC API 所帶的測試工具包來確定他們的驅(qū)動(dòng)程序是否符合這些標(biāo)準(zhǔn)。
"符合 JDBC 標(biāo)準(zhǔn)TM" 表示提供者的 JDBC 實(shí)現(xiàn)已經(jīng)通過了JavaSoft 提供的一致性測試。這些一致性測試將檢查 JDBC API中定義的所有類和方法是否都存在,并盡可能地檢查程序是否具有SQL Entry Level 功能。當(dāng)然,這些測試并不完全,而且 JavaSoft 目前也無意對各提供者的實(shí)現(xiàn)進(jìn)行標(biāo)級。但這種一致性定義的確可對JDBC實(shí)現(xiàn)提供一定的可信度。隨著越來越多的數(shù)據(jù)庫提供者、連接提供者、Internet 提供者和應(yīng)用程序編程員對 JDBC API 的接受,JDBC 也正迅速成為 Java 數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)。
看過“jdbc有什么用途”的人還看了: