JDBC專題介紹(3)
JDBC專題介紹(3)
3. 接口概貌
接口分為兩個(gè)層次,一個(gè)是面向程序開(kāi)發(fā)人員的JDBC API。另外一個(gè)是底層的JDBC Driver API。
3. 1. JDBC API
JDBC API 被描述成為彝族抽象的Java接口,似的應(yīng)用程序遠(yuǎn)可以對(duì)某個(gè)數(shù)據(jù)庫(kù)打開(kāi)連接,執(zhí)行SQL語(yǔ)句并且處理結(jié)果。最重要的接口是:
* java.sql.DriverManager 處理驅(qū)動(dòng)的調(diào)入并且對(duì)產(chǎn)生新的數(shù)據(jù)庫(kù)連接提供支持。
* java.sql.Connection 代表對(duì)特定數(shù)據(jù)庫(kù)的連接。
* java.sql.Statement 代表一個(gè)特定的容器,來(lái)對(duì)一個(gè)特定的數(shù)據(jù)庫(kù)執(zhí)行SQL語(yǔ)句。
* java.sql.ResultSet 控制對(duì)一個(gè)特定語(yǔ)句的行數(shù)據(jù)的存取。
其中java.sql.Statement又有兩個(gè)子類型:
1. java.sql.PreparedStatement 用于執(zhí)行預(yù)編譯的SQL語(yǔ)句。
2. java.sql.CallableStatement 用于執(zhí)行對(duì)一個(gè)數(shù)據(jù)庫(kù)內(nèi)嵌過(guò)程的調(diào)用。
下面的章節(jié)對(duì)JDBC是如何運(yùn)行的提供了更多描述,整個(gè)定義見(jiàn)第13章。另外第15章描述了系統(tǒng)如果獲取數(shù)據(jù)庫(kù)的元數(shù)據(jù)信息。
3. 2. JDBC Driver API
java.sql.Driver在第9章有完整的定義了.大部分JDBC驅(qū)動(dòng)只需要完成這些JDBC API所定義的抽象類就可以了。特別地,所有的driver必須提供對(duì)java.sql.Connection, java.sql. State-ment, java.sql.Prepared-Statement, and java.sql.ResultSet的實(shí)現(xiàn)。如果目標(biāo)DBMS提供有OUT參數(shù)的內(nèi)嵌過(guò)程,那么還必須提供java.sql.CallableStatement 接口。 每個(gè)database driver必須提供一個(gè)類:java.sql.Driver以使得系統(tǒng)可以由 java.sql.DriverManager來(lái)管理。
一個(gè)顯然的driver是在ODBC之上提供對(duì)JDBC的實(shí)現(xiàn),從而提供與ODBC接口的JDBC-ODBC 橋,就象前面的圖所顯示的.由于JDBC放在ODBC之后,所以實(shí)現(xiàn)起來(lái)簡(jiǎn)單而且高效。
另外一個(gè)有用的驅(qū)動(dòng)直接接觸數(shù)據(jù)庫(kù)無(wú)關(guān)的網(wǎng)絡(luò)協(xié)議。發(fā)布一個(gè)協(xié)議允許多個(gè)服務(wù)器實(shí)現(xiàn)的方法,例如在ODBC或者特定的DBMS上(盡管已經(jīng)有了一些使用固定協(xié)議的產(chǎn)品,但是我們不打算對(duì)它們實(shí)現(xiàn)標(biāo)準(zhǔn)化。),是可取的。
4. JDBC使用場(chǎng)合
Before looking at specifics of the JDBC API, an understanding of typical use scenarios is help-ful. There are two common scenarios that must be treated differently for our purposes: applets and applications.
在看JDBC API之前了解一下典型的使用場(chǎng)合是有幫助的。通常有兩種情形必須分別對(duì)待:applet和application.
4. 1. Applet
目前Java使用的最多的從網(wǎng)絡(luò)中下載的applet,它們作為web文件的一個(gè)部分。當(dāng)中有數(shù)據(jù)庫(kù)存取applet和能夠使用JDBC來(lái)接觸數(shù)據(jù)庫(kù)的applet。例如,一個(gè)用戶可能下載一個(gè)顯示股票歷史價(jià)格圖的applet。這個(gè)applet通過(guò)internet來(lái)從關(guān)系數(shù)據(jù)庫(kù)中獲得股票歷史價(jià)格。
最一般的情況里面,對(duì)applet的使用是通過(guò)不可靠的邊界的。例如從另外一個(gè)公司或者Internet上獲得這些applet。于是稱這個(gè)情況為'Internet'場(chǎng)合。然而applet也可能通過(guò)局域網(wǎng)下載。在這個(gè)情況里面,客戶機(jī)的安全都還是一個(gè)問(wèn)題。
典型的applet在幾個(gè)方面與傳統(tǒng)的數(shù)據(jù)庫(kù)應(yīng)用程序有所不同:
1). 不可靠的applet被嚴(yán)格地限制在他們被允許執(zhí)行的的操作上。特別地,不允許他們存取本地的文件,切不允許他們對(duì)任意的數(shù)據(jù)庫(kù)建立網(wǎng)絡(luò)連接。
2). 就標(biāo)識(shí)和連接網(wǎng)上數(shù)據(jù)庫(kù)來(lái)說(shuō),Internet環(huán)境里面的applet面臨新的問(wèn)題。
3). 當(dāng)數(shù)據(jù)庫(kù)可能與你相隔萬(wàn)里的時(shí)候,效率的考慮也有所不同了。與局域網(wǎng)相比,Internet上數(shù)據(jù)庫(kù)applet可能會(huì)碰到十分不同的反應(yīng)時(shí)間。
相關(guān)文章:
1. 使用WebRowSet完成JDBC的大部分任務(wù)2. 為Java創(chuàng)建你自己的腳本語(yǔ)言-JSR 223介紹3. Vue中ref和$refs的介紹以及使用方法示例4. XML基本概念XPath、XSLT與XQuery函數(shù)介紹5. html5手機(jī)觸屏touch事件介紹6. Java多線程Condition接口原理介紹7. Java SE 6中JDBC 4.0的增強(qiáng)特性8. python意思詳細(xì)介紹9. 簡(jiǎn)單介紹java中equals以及==的用法10. 5個(gè)HTML5的常用本地存儲(chǔ)方式詳解與介紹
