JDBC12中幾個最重要的接口和類_第1頁
JDBC12中幾個最重要的接口和類_第2頁
JDBC12中幾個最重要的接口和類_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

JDBC1.2中幾個最重要的接口和類1、DriverManager類是JDBC的管理層,作用于用戶和驅動程序之間。它跟蹤可用的驅動程序,并在數(shù)據(jù)庫和相應驅動程序之間建立連接。另外,DriverManager類也處理諸如驅動程序登錄時間限制及登錄和跟蹤消息的顯示等事務。對于簡單的應用程序,一般程序員需要在此類中直接使用的唯一方法是DriverManager.getConnection()。正如名稱所示,該方法將建立與數(shù)據(jù)庫的連接。2、 Connection:次類代表與數(shù)據(jù)庫的連接。連接過程包括所執(zhí)行的SQL語句和在該連接上所返回的結果。一個應用程序可與單個數(shù)據(jù)庫有一個或多個連接,或者可與許多數(shù)據(jù)庫有連接。3、 Statement對象用于將SQL語句發(fā)送到數(shù)據(jù)庫中。實際上有三種Statement對象,它們都作為在給定連接上執(zhí)行SQL語句的包容器:Statement、PreparedStatement(從Statement繼承而來)和CallableStatement(從PreparedStatement繼承而來)。它們都專用于發(fā)送特定類型的SQL語句:Statement對象用于執(zhí)行不帶參數(shù)的簡單SQL語句;PreparedStatement對象用于執(zhí)行帶或不帶IN參數(shù)的預編譯SQL語句;CallableStatement對象用于執(zhí)行對數(shù)據(jù)庫已存儲過程的調(diào)用。Statement接口提供了執(zhí)行語句和獲取結果的基本方法。PreparedStatement接口添加了處理IN參數(shù)的方法;而CallableStatement添加了處理OUT參數(shù)的方法。4、 ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法(這些get方法可以訪問當前行中的不同列)提供了對這些行中數(shù)據(jù)的訪問。ResultSet.next方法用于移動到ResultSet中的下一行,使下一行成為當前行。JDBC1.0的規(guī)范只提供光標在ResultSet的向后移動,只有next()方法,而沒有previous。方法。在JDBC2.0中,增加了previous()方法。結果集一般是一個表,其中有查詢所返回的列標題及相應的值。例如,如果查詢?yōu)镾ELECTa,b,cFROMTable1,則結果集將具有如下形式:cab12345北京CA83472上海WA83492重慶MA下面的代碼段是執(zhí)行SQL語句的示例。該SQL語句將返回行集合,其中列1為int,列2為String,而列3則為字節(jié)數(shù)組br>java.sql.Statementstmt=conn.createStatement();java.sql.ResultSetrs=stmt.executeQuery("SELECTa,b,cFROMTable1");while(r.next()){//打印當前行的值。inti=r.getInt("a");Strings=r.getString("b");floatf=r.getFloat("c");System.out.println("ROW="+i+""+s+""+f);}CotifMctioi]CctitiectictiScitomtttitCotmactiotiResultseiRssulEsetStfitcnictitSCiitemctKCotifMctioi]CctitiectictiScitomtttitCotmactiotiResultseiRssulEsetStfitcnictitSCiitemctK我們目前所知曉的JDBC驅動程序可分為以下四個種類:1、JDBC-ODBC橋加ODBC驅動程序:JavaSoft橋產(chǎn)品利用ODBC驅動程序提供JDBC訪問。注意,必須將ODBC二進制代碼(許多情況下還包括數(shù)據(jù)庫客戶機代碼)加載到使用該驅動程序的每個客戶機上。這種類型的驅動程序最適合于企業(yè)網(wǎng)(這種網(wǎng)絡上客戶機的安裝不是主要問題),或者是用Java編寫的三層結構的應用程序服5、務器代碼。2、 本地API-部份用Java來編寫的驅動程序:這種類型的驅動程序把客戶機API上的JDBC調(diào)用轉換為Oracle、Sybase、Informix、DB2或其它DBMS的調(diào)用。注意,象橋驅動程序一樣,這種類型的驅動程序要求將某些二進制代碼加載到每臺客戶機上。3、JDBC網(wǎng)絡純Java驅動程序:這種驅動程序將JDBC轉換為與DBMS無關的網(wǎng)絡協(xié)議,這種協(xié)議又被某個服務器轉換為一種DBMS協(xié)議。這種網(wǎng)絡服務器中間件能夠將它的純Java客戶機連接到多種不同的數(shù)據(jù)庫上。所用的具體協(xié)議取決于提供者。通常,這是最為靈活的JDBC驅動程序。有可能所有這種解決方案的提供者都提供適合于Intranet用的產(chǎn)品。為了使這些產(chǎn)品也支持Internet訪問,它們必須處理Web所提出的安全性、通過防火墻的訪問等方面的額外要求。幾家提供者正將JDBC驅動程序加到他們現(xiàn)有的數(shù)據(jù)庫中間件產(chǎn)品中。4、 本地協(xié)議純Java驅動程序:這種類型的驅動程序將JDBC調(diào)用直接轉換為DBMS所使用的網(wǎng)絡協(xié)議。這將允許從客戶機機器上直接調(diào)用DBMS服務器,是Intranet訪問的一個很實用的解決方法。由于許多這樣的協(xié)議都是專用的,因此數(shù)據(jù)庫提供者自己將是主要來源,有幾家提供者已在著手做這件事了。第3、4類驅動程序將成為從JDBC訪問數(shù)據(jù)庫的首選方法。第1、2類驅動程序在直接的純Java驅動程序還沒有上市前將會作為過渡方案來使用。對第1、2類驅動程序可能會有一些變種(下表中未列出),這些變種要求有連接器,但通常這些是更加不可取的解決方案。第3、4類驅動程序提供了Java的所有優(yōu)點,包括自動安裝(例如,通過使用JDBC驅動程序的appletapplet來下載該驅動程序)。什么是事務的ACID特性就是原子特性,不可再分,一個事務內(nèi)的語句只要有一條出錯就都恢復到?jīng)]執(zhí)行時的狀態(tài)(回滾)。就是一個事務要么所有語句都執(zhí)行,要出錯就等于一個都沒執(zhí)行數(shù)據(jù)庫系統(tǒng)必須維護事務的以下特性:原子性(Atomicity),—致性(Consistency),隔離性(Isolation),持久性(Durability).這些特性簡稱ACID。事務的標準定義:指作為單個邏輯工作單元執(zhí)行的一系列操作,而這些邏輯工作單元需要具有原子性,一致性,隔離性和持久性四個屬性,統(tǒng)稱為ACID特性。事務(Transaction)是并發(fā)控制的單位,是用戶定義的一個操作序列。這些操作要么都做,要么都不做,是一個不可分割的工作單位。通過事務,SQLServer能將邏輯相關的一組操作綁定在一起,以便服務器保持數(shù)據(jù)的完整性。:事務通常是以BEGINTRANSACTION開始,以COMMIT或ROLLBACK結束。COMMIT表示提交,即提交事務的所有操作。具體地說就是將事務中所有對數(shù)據(jù)庫的更新寫回到磁盤上的物理數(shù)據(jù)庫中去,事務正常結束。ROLLBACK表示回滾,即在事務運行的過程中發(fā)生了某種故障,事務不能繼續(xù)進行,系統(tǒng)將事務中對數(shù)據(jù)庫的所有以完成的操作全部撤消,滾回到事務開始的狀態(tài)。:事務運行的三種模式:A:自動提交事務每條單獨的語句都是一個事務。每個語句后都隱含一個COMMIT。B:顯式事務以BEGINTRANSACTION顯式開始,以COMMIT或ROLLBACK顯式結束。C:隱性事務在前一個事務完成時,新事務隱式啟動,但每個事務仍以COMMIT或ROLLBACK顯式結束。⑷:事務的特性(ACID特性)A:原子性(Atomicity)事務是數(shù)據(jù)庫的邏輯工作單位,事務中包括的諸操作要么全做,要么全不做。B:一致性(Consistency)事務執(zhí)行的結果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。一致性與原子性是密切相關的。C:隔離性(Isolation)一個事務的執(zhí)行不能被其他事務干擾。D:持續(xù)性/永久性(Durability)一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的。注:事務是恢復和并發(fā)控制的基本單位。((1)是回答事務的概念到底是什么——即你的提問,至于(2)、(3)、(4)只是作的稍許補充而已,不必深究,呵呵……)進程死鎖死鎖定義:一組進程中,任何一個進程都由于在等待該組其他進程占用的某些資源并且永遠無法得到,這種現(xiàn)象被稱為進程死鎖,這組進程被稱為死鎖進程。關于死鎖的一些結論:a.參與死鎖的進程必須要>=兩個b.至少要有兩個進程占有了資源c.參與死鎖的所有進程都在等待資源產(chǎn)生死鎖的四個基本條件:a.循環(huán)等待b.不可剝奪c.互斥使用d.請求和保持多線程之避免死鎖2008-10-0711:08概念:死鎖是指永久阻塞一組爭用一組資源的線程。導致死鎖的最常見情況是自死鎖或遞歸死鎖。在自死鎖或遞歸死鎖中,線程嘗試獲取已被其持有的鎖。遞歸死鎖是在編程時很容易犯的錯誤。另一種死鎖的情況就是多個線程分別獲取一部分資源,并且等待循環(huán)等待其他線程已經(jīng)獲取的資源。避免死鎖有一般的銀行家算法,該算法假設每個客戶有可能在沒有得到最大資源的情況下也能工作。銀行家算法對每一個請求進行檢查,如果它會導致不安全狀態(tài),則不滿足該請求,否則便滿足。檢查狀態(tài)是否安全是看是否有足夠的資源滿足距最大需求最近的客戶。對于每個線程都需要得到最大資源才能工作的情況下,避免死鎖有如下的一般編程實踐:請勿嘗試在可能會對性能造成不良影響的長時間操作(如I/O

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論