偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

答疑解惑:什么是JDBC?

開發(fā) 后端
JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。本文將為大家解釋什么是JDBC?

JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個標準的API,據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純 Java API 編寫數(shù)據(jù)庫應(yīng)用程序,同時,JDBC也是個商標名。

有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBC API,就不必為訪問Sybase數(shù)據(jù)庫專門寫一個程序,為訪問Oracle數(shù)據(jù)庫又專門寫一個程序,或為訪問Informix數(shù)據(jù)庫又編寫另一個程序等等,程序員只需用JDBC API寫一個程序就夠了,它可向相應(yīng)數(shù)據(jù)庫發(fā)送SQL調(diào)用。同時,將Java語言和JDBC結(jié)合起來使程序員不必為不同的平臺編寫不同的應(yīng)用程序,只須寫一遍程序就可以讓它在任何平臺上運行,這也是Java語言“編寫一次,處處運行”的優(yōu)勢。

Java數(shù)據(jù)庫連接體系結(jié)構(gòu)是用于Java應(yīng)用程序連接數(shù)據(jù)庫的標準方法。JDBC對Java程序員而言是API,對實現(xiàn)與數(shù)據(jù)庫連接的服務(wù)提供商而言是接口模型。作為API,JDBC為程序開發(fā)提供標準的接口,并為數(shù)據(jù)庫廠商及第三方中間件廠商實現(xiàn)與數(shù)據(jù)庫的連接提供了標準方法。JDBC使用已有的SQL標準并支持與其它數(shù)據(jù)庫連接標準,如ODBC之間的橋接。JDBC實現(xiàn)了所有這些面向標準的目標并且具有簡單、嚴格類型定義且高性能實現(xiàn)的接口。

Java 具有堅固、安全、易于使用、易于理解和可從網(wǎng)絡(luò)上自動下載等特性,是編寫數(shù)據(jù)庫應(yīng)用程序的杰出語言。所需要的只是 Java應(yīng)用程序與各種不同數(shù)據(jù)庫之間進行對話的方法。而 JDBC 正是作為此種用途的機制。

JDBC 擴展了 Java 的功能。例如,用 Java 和 JDBC API 可以發(fā)布含有 applet 的網(wǎng)頁,而該 applet 使用的信息可能來自遠程數(shù)據(jù)庫。企業(yè)也可以用 JDBC 通過 Intranet 將所有職員連到一個或多個內(nèi)部數(shù)據(jù)庫中(即使這些職員所用的計算機有 Windows、 Macintosh 和UNIX 等各種不同的操作系統(tǒng))。隨著越來越多的程序員開始使用Java 編程語言,對從 Java 中便捷地訪問數(shù)據(jù)庫的要求也在日益增加。

MIS 管理員們都喜歡 Java 和 JDBC 的結(jié)合,因為它使信息傳播變得容易和經(jīng)濟。企業(yè)可繼續(xù)使用它們安裝好的數(shù)據(jù)庫,并能便捷地存取信息,即使這些信息是儲存在不同數(shù)據(jù)庫管理系統(tǒng)上。新程序的開發(fā)期很短。安裝和版本控制將大為簡化。程序員可只編寫一遍應(yīng)用程序或只更新一次,然后將它放到服務(wù)器上,隨后任何人就都可得到最新版本的應(yīng)用程序。對于商務(wù)上的銷售信息服務(wù), Java 和JDBC 可為外部客戶提供獲取信息更新的更好方法。

JDBC 的用途
簡單地說,JDBC 可做三件事:與數(shù)據(jù)庫建立連接、發(fā)送 SQL 語句并處理結(jié)果。下列代碼段給出了以上三步的基本示例:

  1. Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login",  
  2. "password");  
  3. Statement stmt = con.createStatement();  
  4. ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");  
  5. while (rs.next()) {  
  6. int x = rs.getInt("a");  
  7. String s = rs.getString("b");  
  8. float f = rs.getFloat("c");  

上述代碼對基于JDBC的數(shù)據(jù)庫訪問做了經(jīng)典的總結(jié),當然,在本小節(jié)的后續(xù)部分會對它做詳盡的分析講解。

什么是JDBC API?

JDBC 是個"低級"接口,也就是說,它用于直接調(diào)用 SQL 命令。在這方面它的功能極佳,并比其它的數(shù)據(jù)庫連接 API 易于使用,但它同時也被設(shè)計為一種基礎(chǔ)接口,在它之上可以建立高級接口和工具。高級接口是"對用戶友好的"接口,它使用的是一種更易理解和更為方便的 API,這種API在幕后被轉(zhuǎn)換為諸如 JDBC 這樣的低級接口。

在關(guān)系數(shù)據(jù)庫的"對象/關(guān)系"映射中,表中的每行對應(yīng)于類的一個實例,而每列的值對應(yīng)于該實例的一個屬性。于是,程序員可直接對 Java 對象進行操作;存取數(shù)據(jù)所需的 SQL 調(diào)用將在"掩蓋下"自動生成。此外還可提供更復(fù)雜的映射,例如將多個表中的行結(jié)合進一個 Java 類中。

隨著人們對 JDBC 的興趣日益增漲,越來越多的開發(fā)人員一直在使用基于 JDBC 的工具,以使程序的編寫更加容易。程序員也一直在編寫力圖使最終用戶對數(shù)據(jù)庫的訪問變得更為簡單的應(yīng)用程序。例如應(yīng)用程序可提供一個選擇數(shù)據(jù)庫任務(wù)的菜單。任務(wù)被選定后,應(yīng)用程序?qū)⒔o出提示及空白供填寫執(zhí)行選定任務(wù)所需的信息。所需信息輸入應(yīng)用程序?qū)⒆詣诱{(diào)用所需的 SQL 命令。在這樣一種程序的協(xié)助下,即使用戶根本不懂 SQL 的語法,也可以執(zhí)行數(shù)據(jù)庫任務(wù)。

JDBC與ODBC和其它API的比較

目前,Microsoft 的 ODBC API 可能是使用最廣的、用于訪問關(guān)系數(shù)據(jù)庫的編程接口。它能在幾乎所有平臺上連接幾乎所有的數(shù)據(jù)庫。為什么 Java 不使用 ODBC?對這個問題的回答是:Java 可以使用 ODBC,但最好是在 JDBC 的幫助下以 JDBC-ODBC 橋的形式使用,這一點我們稍后再說。現(xiàn)在的問題已變成:"為什么需要 JDBC"?答案是顯然的:ODBC 不適合直接在 Java 中使用,因為它使用 C 語言接口。從Java 調(diào)用本地 C 代碼在安全性、實現(xiàn)、堅固性和程序的自動移植性方面都有許多缺點。從 ODBC C API 到 Java API 的字面翻譯是不可取的。例如,Java 沒有指針,而 ODBC 卻對指針用得很廣泛(包括很容易出錯的指針"void *")。您可以將 JDBC 想象成被轉(zhuǎn)換為面向?qū)ο蠼涌诘?ODBC,而面向?qū)ο蟮慕涌趯?Java 程序員來說較易于接收。

ODBC 很難學。它把簡單和高級功能混在一起,而且即使對于簡單的查詢,其選項也極為復(fù)雜。相反,JDBC 盡量保證簡單功能的簡便性,而同時在必要時允許使用高級功能。啟用"純 Java "機制需要象 JDBC 這樣的 Java API。如果使用ODBC,就必須手動地將 ODBC 驅(qū)動程序管理器和驅(qū)動程序安裝在每臺客戶機上。如果完全用 Java 編寫 JDBC 驅(qū)動程序則 JDBC 代碼在所有 Java 平臺上(從網(wǎng)絡(luò)計算機到大型機)都可以自 動安裝、移植并保證安全性。

總之,JDBC API 對于基本的 SQL 抽象和概念是一種自然的 Java 接口。它建立在 ODBC 上而不是從零開始。因此,熟悉 ODBC 的程序員將發(fā)現(xiàn) JDBC 很容易使用。JDBC 保留了 ODBC 的基本設(shè)計特征;事實上,兩種接口都基于 X/Open SQL CLI(調(diào)用級接口)。它們之間最大的區(qū)別在于:JDBC 以 Java 風格與優(yōu)點為基礎(chǔ)并進行優(yōu)化,因此更加易于使用。

目前,Microsoft 又引進了 ODBC 之外的新 API: RDO、 ADO 和OLE DB。這些設(shè)計在許多方面與 JDBC 是相同的,即它們都是面向?qū)ο蟮臄?shù)據(jù)庫接口且基于可在 ODBC 上實現(xiàn)的類。但在這些接口中,我們未看見有特別的功能使我們要轉(zhuǎn)而選擇它們來替代 ODBC,尤其是在 ODBC 驅(qū)動程序已建立起較為完善的市場的情況下。它們最多也就是在 ODBC 上加了一種裝飾而已。

JDBC URL 參數(shù)詳解

JDBC URL提供了一種標識數(shù)據(jù)庫的方法,可以使相應(yīng)的驅(qū)動程序能識別該數(shù)據(jù)庫并與之建立連接。實際上,驅(qū)動程序編程員將決定用什么JDBC URL來標識特定的驅(qū)動程序。用戶不必關(guān)心如何來形成JDBC URL;他們只須使用與所用的驅(qū)動程序一起提供的URL即可。JDBC的作用是提供某些約定,驅(qū)動程序編程員在構(gòu)造他們的JDBC URL時應(yīng)該遵循這些約定。

由于JDBC URL要與各種不同的驅(qū)動程序一起使用,因此這些約定應(yīng)非常靈活。首先,它們應(yīng)允許不同的驅(qū)動程序使用不同的方案來命名數(shù)據(jù)庫。例如,odbc子協(xié)議允許(但并不是要求)URL含有屬性值。

其次,JDBC URL應(yīng)允許驅(qū)動程序編程員將一切所需的信息編入其中。這樣就可以讓要與給定數(shù)據(jù)庫對話的applet打開數(shù)據(jù)庫連接,而無須要求用戶去做任何系統(tǒng)管理工作。

最后,JDBC URL應(yīng)允許某種程度的間接性。也就是說,JDBC URL可指向邏輯主機或數(shù)據(jù)庫名,而這種邏輯主機或數(shù)據(jù)庫名將由網(wǎng)絡(luò)命名系統(tǒng)動態(tài)地轉(zhuǎn)換為實際的名稱。這可以使系統(tǒng)管理員不必將特定主機聲明為JDBC名稱的一部份。網(wǎng)絡(luò)命名服務(wù)(例如DNS、NIS和DCE)有多種,而對于使用哪種命名服務(wù)并無限制。

JDBC URL的標準語法如下所示。它由三部分組成,各部分間用冒號分隔:

jdbc:<子協(xié)議> <子名稱>JDBC URL的三個部分可分解如下:

(1)jdbc協(xié)議:JDBC URL中的協(xié)議總是jdbc。

(2)<子協(xié)議>:驅(qū)動程序名或數(shù)據(jù)庫連接機制(這種機制可由一個或多個驅(qū)動程序支持)的名稱。子協(xié)議名的典型示例是"odbc",該名稱是為用于指定ODBC風格的數(shù)據(jù)資源名稱的URL專門保留的。例如,為了通過JDBC-ODBC橋來訪問某個數(shù)據(jù)庫,可以用如下所示的URL:jdbc:odbc:book。本例中,子協(xié)議為"odbc",子名稱"book"是本地ODBC數(shù)據(jù)資源。如果要用網(wǎng)絡(luò)命名服務(wù)(這樣JDBC URL中的數(shù)據(jù)庫名稱不必是實際名稱),則命名服務(wù)可以作為子協(xié)議。例如,可用如下所示的URL:jdbc:dcenaming:accounts。本例中,該URL指定了本地DCE命名服務(wù)應(yīng)該將數(shù)據(jù)庫名稱"accounts"解析為更為具體的可用于連接真實數(shù)據(jù)庫的名稱。

(3)<子名稱>:種標識數(shù)據(jù)庫的方法。子名稱可以依不同的子協(xié)議而變化。它還可以有子名稱的子名稱(含有驅(qū)動程序編程員所選的任何內(nèi)部語法)。使用子名稱的目的是為定位數(shù)據(jù)庫提供足夠的信息。前例中,因為ODBC將提供其余部份的信息,因此用"book"就已足夠。然而,位于遠程服務(wù)器上的數(shù)據(jù)庫需要更多的信息。例如,如果數(shù)據(jù)庫是通過Internet來訪問的,則在JDBC URL中應(yīng)將網(wǎng)絡(luò)地址作為子名稱的一部份包括進去,且必須遵循如下所示的標準URL命名約定://主機名:端口/子協(xié)議。

假設(shè)"dbnet"是個用于將某個主機連接到Internet上的協(xié)議,則JDBC URL應(yīng)為:jdbc:dbnet://wombat:356/fred。

答疑解惑:什么是JDBC?到此結(jié)束

【編輯推薦】

  1. 談?wù)剝?yōu)化JDBC數(shù)據(jù)庫編程
  2. 實例說明對MySQL的JDBC連接設(shè)置
  3. 淺談如何利用JSP網(wǎng)頁中JDBC代碼連接MySQL
  4. 淺談JDBC代碼如何重復(fù)使用
  5. 如何進行Jython數(shù)據(jù)庫插入(JDBC)
責任編輯:彭凡 來源: CSDN
相關(guān)推薦

2010-06-10 16:27:17

什么是uml

2010-09-17 13:10:29

JVMJava虛擬機

2019-03-25 20:46:22

混合IT云計算私有云

2009-08-26 14:27:54

C#委托和事件

2009-06-17 17:43:16

英特爾nehalem超線程

2010-04-15 16:00:50

無線上網(wǎng)問題

2013-07-23 10:37:41

軟件定義存儲軟件定義存儲

2009-04-17 10:17:08

路由自動切換接入

2011-08-14 23:26:30

激光打印機常見問題

2015-06-16 13:52:25

Mesos集群管理Hadoop

2010-08-13 13:56:02

Flex事件機制

2010-07-06 11:51:21

UML活動圖

2010-09-27 13:41:49

TCP IP故障問題

2010-04-19 16:39:09

2017-09-12 15:56:43

邊緣計算云計算架構(gòu)

2011-03-22 09:43:06

J-Hi

2010-08-04 15:55:08

Flex是什么

2010-06-07 19:27:40

UML是什么

2010-09-10 14:00:55

Wi-Fi連接失敗答疑

2010-09-09 09:23:42

CSSDIV
點贊
收藏

51CTO技術(shù)棧公眾號