版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java數(shù)據(jù)庫編程Linbo He數(shù)據(jù)庫技術(shù)數(shù)據(jù)庫是一門研究數(shù)據(jù)管理的技術(shù),它開始于本世紀(jì)60年代,經(jīng)過多年的發(fā)展,已形成理論體系,成為計(jì)算機(jī)軟件的一個(gè)重要分支。 數(shù)據(jù)庫是信息管理的基礎(chǔ),任何計(jì)算機(jī)應(yīng)用都需要處理大量數(shù)據(jù),幾乎都少不了數(shù)據(jù)庫的需求。隨著網(wǎng)絡(luò)的應(yīng)用,遠(yuǎn)程異地的網(wǎng)絡(luò)數(shù)據(jù)庫使用也變得越來越重要。為什么要使用數(shù)據(jù)庫?盡管文件系統(tǒng)可以解決不少問題,有些問題是文件系統(tǒng)所無法解決的,如果給文件系統(tǒng)加上這些特性,那么文件系統(tǒng)也就成為了一個(gè)數(shù)據(jù)庫。 數(shù)據(jù)的冗余與數(shù)據(jù)不一致:重復(fù)數(shù)據(jù)多,而且對(duì)于分布式, 有可能出現(xiàn)數(shù)據(jù)無法同步的問題。數(shù)據(jù)訪問困難,數(shù)據(jù)孤立:因?yàn)閿?shù)據(jù)存儲(chǔ)沒有采取同樣的格式,使得使用
2、統(tǒng)一的接口訪問數(shù)據(jù)變得不可能。完整性問題:數(shù)據(jù)的正確性和相容性。原子性問題:就是事務(wù)處理,如何保證一個(gè)操作的完整性。并發(fā)訪問:這也是事務(wù)處理的一部分,數(shù)據(jù)庫需要應(yīng)對(duì)同時(shí)異地對(duì)同一個(gè)數(shù)據(jù)操作的可能。安全性問題:主要是數(shù)據(jù)庫訪問權(quán)限問題。關(guān)系型數(shù)據(jù)庫的基本概念數(shù)據(jù)庫(date base):按特定方式存儲(chǔ)在存儲(chǔ)媒體中可共享的相關(guān)數(shù)據(jù)的集合??梢岳斫鉃閿?shù)據(jù)的倉庫。其組織方式可支持對(duì)數(shù)據(jù)的有效存取?,F(xiàn)在的數(shù)據(jù)庫往往由多個(gè)表(table)和表之間的關(guān)聯(lián)關(guān)系組成的數(shù)據(jù)的集合,表是一個(gè)由若干行、若干列組成的二維的關(guān)系結(jié)構(gòu)。其存在形式是一個(gè)計(jì)算機(jī)文件: 如: ABC.DBF,客戶.MDB, Total.DBC,
3、我們稱之為數(shù)據(jù)庫文件或庫文件。 實(shí)體用表來表示,實(shí)體之間的關(guān)系也用表來表示。 表的列稱為字段。數(shù)據(jù)庫的概念分層物理層:定義數(shù)據(jù)的存儲(chǔ)格式。能夠涉及這一層的人是數(shù)據(jù)庫軟件開發(fā)者。邏輯層:定義數(shù)據(jù)以及數(shù)據(jù)之間的關(guān)系。能夠涉及這一層的人是數(shù)據(jù)庫的設(shè)計(jì)者。視圖層:定義最終展現(xiàn)在客戶面前的數(shù)據(jù)的格式。涉及這一層的是數(shù)據(jù)庫客戶端的開發(fā)者, 以及最終的用戶。這三層從上到下層層透明。用戶不關(guān)心數(shù)據(jù)庫結(jié)構(gòu),數(shù)據(jù)庫設(shè)計(jì)開發(fā)者不關(guān)心存儲(chǔ)結(jié)構(gòu)。數(shù)據(jù)模型什么是數(shù)據(jù)模型? 數(shù)據(jù)模型是客觀事物及其聯(lián)系的數(shù)據(jù)描述,數(shù)據(jù)模型應(yīng)具有數(shù)據(jù)的描述和數(shù)據(jù)聯(lián)系兩方面功能。數(shù)據(jù)的描述就是指出: 模型中包含那些記錄類型,并對(duì)記錄類型進(jìn)行命名
4、; 指明各個(gè)記錄類型由那些數(shù)據(jù)構(gòu)成,并對(duì)數(shù)據(jù)項(xiàng)進(jìn) 行命名,每個(gè)數(shù)據(jù)項(xiàng)均需指明其數(shù)據(jù)類型和取值范 圍。數(shù)據(jù)間聯(lián)系的描述就是指明: 各個(gè)不同記錄間所存在的聯(lián)系和聯(lián)系方式。實(shí)體模型 什么是實(shí)體模型呢? 實(shí)體聯(lián)系模型又稱信息模型,是客觀事物及其自然聯(lián)系在人腦中所形成的概念。 實(shí)體模型和數(shù)據(jù)模型的關(guān)系是什么? 數(shù)據(jù)模型本質(zhì)上是“信息模型”的數(shù)據(jù)化表示。從實(shí)體模型到數(shù)據(jù)模型要經(jīng)歷三個(gè)領(lǐng)域的演變過程: 現(xiàn)實(shí)世界信息世界數(shù)據(jù)世界實(shí)體與屬性這是信息世界中廣泛使用的兩個(gè)術(shù)語實(shí)體:現(xiàn)實(shí)世界任何可相互區(qū)別的事物,不論是實(shí)際存在的東西,還是概念性的東西,或是事物與事物之間的聯(lián)系,一律統(tǒng)稱為實(shí)體。屬性:實(shí)體所具有的性質(zhì),
5、統(tǒng)稱為屬性。實(shí)體是靠屬性來描述的。實(shí)體集同一類型的實(shí)體集合稱為實(shí)體集。域?qū)嶓w中的每個(gè)屬性,都有一個(gè)取值范圍,這叫作屬性的“域”。域可以是整數(shù)、實(shí)數(shù)、字符串等鍵(key)又稱為關(guān)鍵字,它是指在實(shí)體屬性中,可用于區(qū)別實(shí)體集中不同個(gè)體的那個(gè)屬性或幾個(gè)屬性的組合。實(shí)體間的聯(lián)系方式實(shí)體之間的聯(lián)系實(shí)際上反映了實(shí)體之間的語義 關(guān)系。聯(lián)系也是實(shí)體,因此它也可以有屬性。 實(shí)體間聯(lián)系情況比較復(fù)雜,就其聯(lián)系方式來說, 我們可把它分為以下三種:1) :一對(duì)一聯(lián)系(簡(jiǎn)記為1:1)2) :一對(duì)多聯(lián)系(簡(jiǎn)記為1:n)3) :多對(duì)多聯(lián)系(簡(jiǎn)記為m:n)一對(duì)一聯(lián)系 若兩個(gè)同型實(shí)體集中,一方的一個(gè)實(shí)體唯一與另一方的一個(gè)實(shí)體相對(duì)應(yīng)
6、,則稱為1:1聯(lián)系。如下圖所示的婚姻關(guān)系一對(duì)多聯(lián)系若兩個(gè)不同型的實(shí)體集中,一方一個(gè)實(shí)體對(duì)應(yīng)另一方多個(gè)實(shí)體;反之另一方一個(gè)實(shí)體最多只與本方一個(gè)實(shí)體相對(duì)應(yīng), 稱1:n聯(lián)系。如下圖所示:多對(duì)多關(guān)系 若兩不同型實(shí)體集中,任何方一個(gè)實(shí)體都與對(duì)方一個(gè)或多個(gè)實(shí)體相對(duì)應(yīng),稱m :n聯(lián)系,如下圖學(xué)生與課程的關(guān)系 “多對(duì)多模式”需要在A表和B表之間有一個(gè)關(guān)聯(lián)表,這個(gè)關(guān)聯(lián)表也是“多對(duì)多模式”的核心所在。根據(jù)關(guān)聯(lián)表是否有獨(dú)立的業(yè)務(wù)處理需求,可將其劃分為兩種細(xì)分情況。 具備獨(dú)立的業(yè)務(wù)處理需求,是一個(gè)業(yè)務(wù)實(shí)體對(duì)象,因此它具備一些特有的屬性。 本身不具備獨(dú)立的業(yè)務(wù)處理需求,所以也就沒有什么特殊的屬性。E-R圖的畫法 E-R
7、圖中包括:實(shí)體、屬性和聯(lián)系三種基本圖素。 習(xí)慣上實(shí)體用方框表示,實(shí)體的屬性用橢圓框表示,聯(lián)系用菱形框表示。E-R的設(shè)計(jì)原則針對(duì)每一用戶作出該用戶信息的局部E-R圖, 確定該用戶視圖的實(shí)體、屬性和聯(lián)系。 能作為屬性的就不要作為實(shí)體,這樣有利于簡(jiǎn)化E-R圖。綜合局部E-R圖,產(chǎn)生出總體E-R圖。 在綜合的過程中,同名實(shí)體只能出現(xiàn)一次,還要去掉不必要的聯(lián)系,以便消除冗余。最后說明一點(diǎn):一個(gè)系統(tǒng)的E-R圖不是唯一的,強(qiáng)調(diào)不同的側(cè)面作出的E-R圖可能有很大的不同。例設(shè)某企業(yè)信息系統(tǒng)有下列用戶:人事科處理職工;供應(yīng)科處理采購業(yè)務(wù);總務(wù)科處理倉庫業(yè)務(wù);生產(chǎn)科處理產(chǎn)品業(yè)務(wù)。試根據(jù)上述要求設(shè)計(jì)出能反映所有用戶信
8、息視圖的總體E- R圖。人事科視圖供應(yīng)科視圖生產(chǎn)科視圖總務(wù)科視圖總體E-R圖綜合后的E-R圖中去掉了一些聯(lián)系,又增添了一些新聯(lián)系,這是允許的導(dǎo)出關(guān)系模型E-R圖僅是現(xiàn)實(shí)世界的純粹反映,與數(shù)據(jù)庫具體實(shí)現(xiàn)毫無關(guān)系,但它是構(gòu)造數(shù)據(jù)模型的依據(jù)。下面給出從E-R圖出發(fā)導(dǎo)出關(guān)系模型的原則。原則一:對(duì)于E-R圖中每個(gè)實(shí)體,都應(yīng)轉(zhuǎn)換為一個(gè)關(guān)系,該關(guān)系應(yīng)包括對(duì)應(yīng)實(shí)體的全部屬性,并應(yīng)根據(jù)關(guān)系所表達(dá)的語義確定哪個(gè)屬性作為“主鍵”。鍵在關(guān)系模型中是實(shí)現(xiàn)聯(lián)系的主要手段原則二:對(duì)于E-R圖中的聯(lián)系,情況比較復(fù)雜, 要根據(jù)實(shí)體聯(lián)系方式的不同,采取不同的手段 加以實(shí)現(xiàn)。數(shù)據(jù)庫語言 數(shù)據(jù)庫語言通常由兩個(gè)部分組成: (1) DD
9、L數(shù)據(jù)定義語言。(2)DML數(shù)據(jù)操縱語言。最常用的數(shù)據(jù)庫語言就是SQL。數(shù)據(jù)庫設(shè)計(jì)要點(diǎn)主鍵與外鍵一般而言,一個(gè)實(shí)體不能既無主鍵又無外鍵。主鍵與外鍵的設(shè)計(jì),在全局?jǐn)?shù)據(jù)庫的設(shè)計(jì)中, 占有重要地位。主鍵是實(shí)體的高度抽象,主鍵與外鍵的配對(duì),表示實(shí)體之間的連接。鍵可以是一無物理意義的數(shù)字串, 由程序自動(dòng)加1來實(shí)現(xiàn)。也可以是有物理意義的字段名或字段名的組合。不過前者比后者好。當(dāng)PK是字段名的組合時(shí),建議字段的個(gè)數(shù)不要太多,多了不但索引占用空間大,而且速度也慢。通俗地理解三個(gè)范式第一范式:1NF是對(duì)屬性的原子性約束,要求屬性具有原子性,不可再分解;第二范式:2NF是對(duì)記錄的惟一性約束,要求記錄有惟一標(biāo)識(shí),即
10、實(shí)體的惟一性;第三范式:3NF是對(duì)字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余;沒有冗余的數(shù)據(jù)庫設(shè)計(jì)可以做到。但是,沒有冗余的 數(shù)據(jù)庫未必是最好的數(shù)據(jù)庫,有時(shí)為了提高運(yùn)行效率,就必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù)。三少原則一個(gè)數(shù)據(jù)庫中表的個(gè)數(shù)越少越好。只有表的個(gè)數(shù)少,才能說明系統(tǒng)的E-R圖少而精,去掉了重復(fù)的多余的實(shí)體,形成了對(duì)客觀世界的高度抽象。一個(gè)表中組合主鍵的字段個(gè)數(shù)越少越好。因?yàn)橹麈I的作用,一是建主鍵索引,二是做為子表的外鍵, 所以組合主鍵的字段個(gè)數(shù)少了,不僅節(jié)省了運(yùn)行時(shí) 間,而且節(jié)省了索引存儲(chǔ)空間;一個(gè)表中的字段個(gè)數(shù)越少越好。只有字段的個(gè)數(shù)少了,才能說明在系
11、統(tǒng)中不存在數(shù)據(jù)重復(fù),且很少有數(shù)據(jù)冗余Java JDBCJDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。 JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序,同時(shí),JDBC也是個(gè)商標(biāo)名。The typeof JDBCType1:JDBC-ODBC bridge要求客戶端必須安裝ODBC驅(qū)動(dòng)執(zhí)行效率比較低,對(duì)于那些大數(shù)據(jù)量存取的應(yīng)用是不適合的適用于快速的原型系統(tǒng),沒有提供JDBC 驅(qū) 動(dòng) 的 數(shù) 據(jù)
12、 庫 如 Access(Desktop Database)Type2:Java to native API這種驅(qū)動(dòng)比起JDBC-ODBC橋執(zhí)行效率略有提高。但是,它仍然需要在客戶端加載數(shù)據(jù)庫廠商提供的代碼庫.這樣就不適合基于internet的應(yīng)用Type3:Java to Net適合那種需要同時(shí)連接多個(gè)不同種類的數(shù)據(jù)庫并且對(duì)并發(fā)連接要求高的應(yīng)用Type4:Java to Native Database最高的性能,通過自己的本地協(xié)議直接與數(shù)據(jù)庫引擎通信JDBC與數(shù)據(jù)庫驅(qū)動(dòng)程序JDBC 為多種關(guān)系數(shù)據(jù)庫提供了統(tǒng)一訪問方式, 作為特定廠商數(shù)據(jù)庫訪問API的一種高級(jí)抽象, 它主要包含一些通用的接口類。
13、真正的數(shù)據(jù)庫訪問操作實(shí)現(xiàn)是由各自數(shù)據(jù)庫廠商提供的。通常把廠商提供的特定于數(shù)據(jù)庫的訪問API稱為 數(shù)據(jù)庫JDBC驅(qū)動(dòng)程序。JDBC通過提供一個(gè)抽象的數(shù)據(jù)庫接口,使得程序開發(fā)人員在編程時(shí)可以不用綁定在特定數(shù)據(jù)庫廠商的API上,大大增加了應(yīng)用程序的可移植性。在實(shí)際運(yùn)行過程中程序代碼通過JDBC訪問數(shù)據(jù)庫時(shí),仍舊需要調(diào)用特定于數(shù)據(jù)庫的訪問API。應(yīng)用層JDBC 接口層JDBC 驅(qū)動(dòng)層數(shù)據(jù)庫JDBC訪問數(shù)據(jù)庫層次結(jié)構(gòu)數(shù)據(jù)庫廠商數(shù)據(jù)庫JDBC 驅(qū)動(dòng)程序JDBC APISunJ2EE 應(yīng)用程序員開發(fā)為了讓JDBC與平臺(tái)無關(guān),JDBC提供所謂的“驅(qū)動(dòng)程序管理器(driver manager)”,它會(huì)動(dòng)態(tài)維護(hù)所
14、有“數(shù)據(jù)庫查詢”所需要的驅(qū)動(dòng)程序?qū)ο笫褂肅lass.forName()進(jìn)行裝載,向驅(qū)動(dòng)管理器注冊(cè)。創(chuàng)建數(shù)據(jù)庫連接,分為以下幾步: 首先注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)程序然后根據(jù)具體的JDBC URL地址,調(diào)用DriverManager對(duì)象的getConnection()來獲取一個(gè)代表數(shù)據(jù)庫連接的java.sql.connection 對(duì)象。JDBC URL 的格式如下:jdbc:子協(xié)議:數(shù)據(jù)庫 MySQL數(shù)據(jù)庫:jdbc:mysql:/機(jī)器名/數(shù)據(jù)庫名 Oracle數(shù)據(jù)庫:jdbc:oracle:thin機(jī)器名:端口名:數(shù)據(jù)庫名 jdbc:sqlserver:/localhost:1433;data base
15、Name=Graduate給定具體的JDBC URL,獲取數(shù)據(jù)庫連接的方法是在DriverManager對(duì)象上調(diào)用getConnection()。這種方法有兩種形式:DriverManager.getConnection(url) DriverManager.getConnection(url,user, password)其中第二種方式需要輸入用戶名和行身份認(rèn)證。信息進(jìn)連接數(shù)據(jù)庫示例JDBC對(duì)數(shù)據(jù)庫執(zhí)行SQL java.sql.Statement 對(duì)象代表一條發(fā)送到數(shù)據(jù)庫執(zhí)行的SQL語句。 有三種 Statement 對(duì)象: Statement 對(duì)象用于執(zhí)行不帶參數(shù)的簡(jiǎn)單SQL 語句; Pr
16、eparedStatement 對(duì)象用于執(zhí)行帶或不帶參數(shù)的預(yù)編譯 SQL 語句 CallableStatement 對(duì)象用于執(zhí)行對(duì)數(shù)據(jù)庫存儲(chǔ)過程的調(diào)用。StatementStatement對(duì)象提供了三種執(zhí)行SQL語句的方法: executeQuery():(用于產(chǎn)生單個(gè)結(jié)果集的sql, 如select語句) executeUpdate:(用于執(zhí)行insert、delete、update、create table、drop table等) execute():用于執(zhí)行返回多個(gè)結(jié)果集、多個(gè)更新計(jì)數(shù)或二者組合的語句,多數(shù)程序員不會(huì)需要該高級(jí)功能。PreparedStatementPreparedSt
17、atement 實(shí)例包含已編譯的 SQL語句,這也是將其命名冠以“Prepared”的原因。包含于 PreparedStatement 對(duì)象中的SQL 語句可具有一個(gè)或多個(gè) IN 參數(shù)。IN 參數(shù)的值在 SQL 語句創(chuàng)建時(shí)未被指定。相反的,該語句為每個(gè) IN 參數(shù)保留一個(gè)問號(hào)(“?”) 作為占位符。每個(gè)問號(hào)的值必須在該語句執(zhí)行之前通過適當(dāng)?shù)?setXXX() 方法來提供。由于 PreparedStatement 對(duì)象已預(yù)編譯過,所以其執(zhí)行速度要快于 Statement 對(duì)象。因此多次執(zhí)行的 SQL 語句經(jīng)常創(chuàng)建為PreparedStatement 對(duì)象,以提高效率。PreparedStatem
18、ent 接口也有自己的executeQuery、executeUpdate 和execute 方法。Statement 對(duì)象本身不包含SQL 語句,因而必須給 Statement.execute 方法提供 SQL 語句作為參數(shù)。PreparedStatement 對(duì)象并不將 SQL 語句作為參數(shù)提供給這些方法,因?yàn)樗鼈円呀?jīng)包含預(yù)編譯 SQL 語句。CallableStatement調(diào)用存儲(chǔ)過程將常用的或很復(fù)雜的工作,預(yù)先用SQL語句寫好并用一個(gè)指定的名稱存儲(chǔ)起來, 那么以后要叫數(shù)據(jù)庫提供與已定義好的存儲(chǔ)過程的功能相同的服務(wù)時(shí),只需調(diào)用execute,即可自動(dòng)完成命令。存儲(chǔ)過程的優(yōu)點(diǎn)存儲(chǔ)過程只在
19、創(chuàng)造時(shí)進(jìn)行編譯,以后每次執(zhí)行存儲(chǔ)過程都不需再重新編譯,而一般SQL語句每執(zhí)行一次就編譯一次,所以使用存儲(chǔ)過程可提高數(shù)據(jù)庫執(zhí)行速度。當(dāng)對(duì)數(shù)據(jù)庫進(jìn)行復(fù)雜操作時(shí)(如對(duì)多個(gè)表進(jìn)行Update,Insert,Query,Delete時(shí)),可將此復(fù)雜操作用存儲(chǔ)過程封裝起來與數(shù)據(jù)庫提供的事務(wù)處理結(jié)合一起使用。存儲(chǔ)過程可以重復(fù)使用,可減少數(shù)據(jù)庫開發(fā)人員的工作量安全性高,可設(shè)定只有本地用戶才具有對(duì)指定存儲(chǔ)過程的使用權(quán)Statement接口的比較StatementPreparedStatementCallableStatement代碼創(chuàng)建客戶端客戶端服務(wù)器端代碼存儲(chǔ)客戶端服務(wù)器端服務(wù)器端語言Java,SQLJav
20、a,SQL服務(wù)器端特定數(shù)據(jù)庫語言可配置性靈活較差差可移植性高高(支持)差效率低第一次低,以后高高關(guān)閉JDBC資源首先關(guān)閉記錄集;其次關(guān)閉Statement;最后關(guān)閉連接對(duì)象。例:if(rs !=null)tryrs.close();catch(SQLException e.printStackTrace(); if(stm!=null)trystm.close();e)catch(SQLException e)e.printStackTrace();if(con!=null)trycon.close();catch(SQLException e)e.printStackTrace();元數(shù)據(jù)與
21、異常 元數(shù)據(jù) 異常元數(shù)據(jù)元數(shù)據(jù):描述數(shù)據(jù)的數(shù)據(jù)。開發(fā)IDE工具、中間件服務(wù)器開發(fā)人員需要重點(diǎn)掌握。對(duì)于普通的應(yīng)用系統(tǒng)開發(fā)者,只需了解即可。DatabaseMetaData接口,用于提供關(guān)于數(shù)據(jù)庫的整體綜合信 息。DatabaseMetaData dmd=conn.getMetaData();DatabaseMetaData:整個(gè)數(shù)據(jù)庫的元數(shù)據(jù)數(shù)據(jù)庫版本、名稱數(shù)據(jù)庫驅(qū)動(dòng)程序的版本、名稱數(shù)據(jù)庫支持的操作(事務(wù)隔離級(jí)別、結(jié)果集支持的類型等)ResultSetMetaData ,用于描述結(jié)果集本身的信息, 表結(jié)構(gòu)(包括有哪些字段,字段的類型等信息).即可用于獲取關(guān) 于 ResultSet對(duì)象中列的類型
22、和屬性信息的對(duì)象。ResultSetMetaData rsmd=rs.getMetaData();異常SQLException:致命性的錯(cuò)誤,如,表不存在等,主鍵重復(fù)等。int getErrorCode()MySQL:1062 DB2:803Oracle:1/Vendor specific依賴于具體的數(shù)據(jù)庫廠商,返回?cái)?shù)據(jù)庫廠商特定的錯(cuò)誤代碼。SQLException getNextException()檢索到此 SQLException 對(duì)象的異常鏈。 如果不存在,則返回 null。String getSQLState()依賴于規(guī)范 ,返回SQL99或者XOPEN中規(guī)定的錯(cuò)誤代碼。出現(xiàn)SQLE
23、xception的情況: 網(wǎng)絡(luò)連接失敗 SQL語句存在語法錯(cuò)誤 不支持的函數(shù)調(diào)用 引用不存在的字段 插入主鍵相同的行 其他SQLWarning(非致命性的錯(cuò)誤,提供關(guān)于數(shù)據(jù)庫訪問警告信息的異常,很多時(shí)候無需程序員處理,是SQLException類的子類)拋出SQLWarning之后數(shù)據(jù)庫操作是否成功,與特定的數(shù)據(jù)庫Driver相關(guān)事務(wù)處理What is TransactionJDBC API中使用事務(wù)處理步驟并發(fā)控制What is Transaction事務(wù)處理:一系列的動(dòng)作作為一個(gè)不可分解的操作。ACID 屬性:Atomic Consistent Isolated Durable 1.原子性
24、 ALL-NOTHING事務(wù)中包含的程序作為數(shù)據(jù)庫的邏輯工作單位,它所做的對(duì)數(shù)據(jù)修改操作要么全部執(zhí)行,要么完全不執(zhí)行。2. 一致性 事務(wù)的一致性指的是在一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后數(shù)據(jù)庫都必須處于一致性狀態(tài)。這種特性稱為事務(wù)的一致性。假如數(shù)據(jù)庫的狀態(tài)滿足所有的完整性約束,就說該數(shù)據(jù)庫是一致的。3. 分離性 分離性指并發(fā)的事務(wù)是相互隔離的。即一個(gè)事務(wù)內(nèi)部的操作及正在操作的數(shù)據(jù)必須起來,不被其它企圖進(jìn)行修改的事務(wù)看到。4.持久性持久性意味著當(dāng)系統(tǒng)或介質(zhì)發(fā)生故障時(shí),確保已提交事務(wù)的更新不能丟失即一旦一個(gè)事務(wù)提交,DBMS保證它對(duì)數(shù)據(jù)庫中數(shù)據(jù)的改變應(yīng)該是永久性的,耐得住任何系統(tǒng)故障。持久性通過數(shù)據(jù)庫備份
25、和恢復(fù)來保證。JDBC API中使用事務(wù)處理步驟默認(rèn)是自動(dòng)提交:每發(fā)送一條SQL語句都是自動(dòng)提交的!1) 用false作為參數(shù)調(diào)用Connection setAutoCommit方法;2) 執(zhí)行一或多個(gè)關(guān)于數(shù)據(jù)庫的操作;3) 調(diào)用commit方法完成改變;4) 如果發(fā)生錯(cuò)誤,恢復(fù)上次提交后的改變,調(diào)用rollback方法;5) 用true作為參數(shù)調(diào)用setAutoCommit方法; 恢復(fù)自動(dòng)提交事務(wù)開關(guān)。Connection Pool存放Connection對(duì)象的容器; 減少連接數(shù)據(jù)庫的開銷;程序請(qǐng)求連接時(shí),在Connection Pool中取連接;連接使用完后,放回Connection Pool,不釋放; Connection Pool對(duì)連接進(jìn)行管理:計(jì)數(shù)、監(jiān)控連接狀態(tài);JNDIJNDI(Java Naming and Directory Interface), 能夠提供注冊(cè)和訪問遠(yuǎn)程服務(wù)的API. 相應(yīng)的API在javax.naming包中.JNDI API為應(yīng)用程序提供了一種統(tǒng)一的訪問遠(yuǎn)程服務(wù)的方式. 使用JNDI API , 應(yīng)用程序能夠通過指定一個(gè)邏輯的名稱來訪問一個(gè)DataSource(當(dāng)然可以是其他類型的遠(yuǎn)程對(duì)象) 對(duì)象。DataSourceWhat is DataSourc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版草原生態(tài)補(bǔ)償金支付及承包合同范本4篇
- 二零二五版酒吧節(jié)日優(yōu)惠入場(chǎng)費(fèi)及消費(fèi)返券合同范本3篇
- 二零二五年度石場(chǎng)生產(chǎn)線承包合同模板3篇
- 2025年度新材料研發(fā)車間承包運(yùn)營合同范本4篇
- 二零二五年度木地板工程碳排放管理與施工合同4篇
- 2025年度內(nèi)河煤炭船運(yùn)合同標(biāo)準(zhǔn)文本
- 2025年度模特演藝活動(dòng)參演及演出報(bào)酬合同
- 海上快遞出口運(yùn)輸合同要點(diǎn)
- 二零二五年度流產(chǎn)手術(shù)并發(fā)癥責(zé)任認(rèn)定合同4篇
- 二零二五年度停車場(chǎng)綠化養(yǎng)護(hù)及節(jié)能改造合同
- 普通高中生物新課程標(biāo)準(zhǔn)
- 茉莉花-附指法鋼琴譜五線譜
- 結(jié)婚函調(diào)報(bào)告表
- SYT 6968-2021 油氣輸送管道工程水平定向鉆穿越設(shè)計(jì)規(guī)范-PDF解密
- 冷庫制冷負(fù)荷計(jì)算表
- 肩袖損傷護(hù)理查房
- 設(shè)備運(yùn)維管理安全規(guī)范標(biāo)準(zhǔn)
- 辦文辦會(huì)辦事實(shí)務(wù)課件
- 大學(xué)宿舍人際關(guān)系
- 2023光明小升初(語文)試卷
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
評(píng)論
0/150
提交評(píng)論