![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-7/14/16/1ed3c338-a9d8-457e-81eb-0d08f98b7036/1ed3c338-a9d8-457e-81eb-0d08f98b7036pic.jpg)
![第5章 數(shù)據(jù)庫操作_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-7/14/16/1ed3c338-a9d8-457e-81eb-0d08f98b7036/1ed3c338-a9d8-457e-81eb-0d08f98b70361.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 數(shù)據(jù)庫操作,本章主要內(nèi)容:數(shù)據(jù)庫概述JDBC的結(jié)構(gòu)JDBC的驅(qū)動(dòng)程序數(shù)據(jù)庫的連接與操作,第5章 數(shù)據(jù)庫操作,5.1 數(shù)據(jù)庫概述5.2 JDBC技術(shù)5.3 連接數(shù)據(jù)庫5.4 操作數(shù)據(jù)庫,5.1 數(shù)據(jù)庫概述,5.1.1關(guān)系模型5.1.2結(jié)構(gòu)化查詢語言SQL,,5.1.1關(guān)系模型,數(shù)據(jù)庫管理系統(tǒng)是管理數(shù)據(jù)庫的系統(tǒng),它按一定的數(shù)據(jù)模型組織數(shù)據(jù)。數(shù)據(jù)庫管理系統(tǒng)采用的數(shù)據(jù)模型主要有:關(guān)系模型、層次模型和網(wǎng)狀模型。
2、關(guān)系模型是目前應(yīng)用最廣的數(shù)據(jù)模型。關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成。例如學(xué)生信息登記表。,關(guān)系模型以二維表格(關(guān)系表)的形式組織數(shù)據(jù)庫中的數(shù)據(jù)。通常把關(guān)系表的結(jié)構(gòu)稱為關(guān)系模式。關(guān)系模型的基本概念如下所述。(1)關(guān)系(2)元組(3)屬性(4)主碼(5)域(6)分量(7)關(guān)系模式(8)格式,5.1.1關(guān)系模型,,5.1.2結(jié)構(gòu)化查詢語言SQL,結(jié)構(gòu)化查詢語言SQL是用于操作關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,具有數(shù)據(jù)定
3、義、查詢、更新和控制等多種功能,它使用方便、功能豐富、簡(jiǎn)潔易學(xué)。SQL語言由3部分組成:(1)數(shù)據(jù)定義語言(DDL)(2)數(shù)據(jù)操縱語言(DML)(3)數(shù)據(jù)控制語言(DCL),SQL語言中最常用的命令:1. 創(chuàng)建數(shù)據(jù)庫CREATE DATABASECREATE DATABASE 數(shù)據(jù)庫名稱2. 創(chuàng)建表CREATE TABLECREATE TABLE 表名稱 (列名 數(shù)據(jù)類型, …)3. 插入數(shù)據(jù)語句INSERTINSE
4、RT INTO 表名 [(字段名表)] VALUES (值表)4. 刪除數(shù)據(jù)語句DELETEDELETE FROM表名 [WHERE 條件],5.1.2結(jié)構(gòu)化查詢語言SQL,5. 更新數(shù)據(jù)語句UPDATEUPDATE 表名SET 字段名1=值 [,字段名2=值 …] [WHERE 條件]6. 數(shù)據(jù)查詢SELECTSELECT [DISTINCT] [別名.]字段名或表達(dá)式 [AS 列標(biāo)題]FROM 表或視圖 別名[ WH
5、ERE條件][ GROUP BY 分組表達(dá)式][ ORDER BY 排序表達(dá)式[ ASC | DESC ]] SELECT子句雖然復(fù)雜,但在實(shí)際應(yīng)用中,幾乎不可能同時(shí)遇到這么多選項(xiàng),一般常用的形式是:SELECT [別名.]字段名或表達(dá)式 FROM 表或視圖 別名[WHERE條件],5.1.2結(jié)構(gòu)化查詢語言SQL,5.2 JDBC技術(shù),5.2.1 JDBC介紹5.2.2 JDBC體系結(jié)構(gòu)5.2.3 JDBC驅(qū)動(dòng)程序
6、5.2.4 JDBC接口,,5.2.1 JDBC介紹,JDBC是一種可用于執(zhí)行SQL語句的Java API(應(yīng)用程序設(shè)計(jì)接口),它由一些Java語言編寫的類和界面組成。JDBC為數(shù)據(jù)庫應(yīng)用開發(fā)人員、數(shù)據(jù)庫前臺(tái)工具開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。,通過使用JDBC,可以很方便地將SQL語句傳送給幾乎任何一種數(shù)據(jù)庫,也就是說,開發(fā)人員可以不必寫一個(gè)程序訪問Oracle,再寫一
7、個(gè)程序訪問SQL Server。 簡(jiǎn)單的說,JDBC能實(shí)現(xiàn)以下3個(gè)功能:(1)同一個(gè)數(shù)據(jù)庫建立連接。(2)向數(shù)據(jù)庫發(fā)送SQL語句。(3)處理數(shù)據(jù)庫返回的結(jié)果。,5.2.1 JDBC介紹,5.2.2 JDBC體系結(jié)構(gòu),JDBC的出現(xiàn)使Java程序?qū)Ω鞣N數(shù)據(jù)庫的訪問能力大大增強(qiáng)。JDBC的體系結(jié)構(gòu)如圖所示。,由圖中可以看出,JDBC的體系結(jié)構(gòu)有四個(gè)組件,分別為應(yīng)用程序、JDBC API、JDBC驅(qū)動(dòng)程序管理器和為各種數(shù)據(jù)
8、庫定制的JDBC驅(qū)動(dòng)程序,提供與不同數(shù)據(jù)庫的透明連接。其中JDBC API的作用就是屏蔽不同的數(shù)據(jù)庫間JDBC驅(qū)動(dòng)程序之間的差別,使得程序設(shè)計(jì)人員有一個(gè)標(biāo)準(zhǔn)的、純Java的數(shù)據(jù)庫程序設(shè)計(jì)接口,為在Java中訪問任意類型的數(shù)據(jù)庫提供技術(shù)支持。JDBC驅(qū)動(dòng)程序管理器為應(yīng)用程序裝載數(shù)據(jù)庫驅(qū)動(dòng)程序。JDBC驅(qū)動(dòng)程序與具體的數(shù)據(jù)庫相關(guān),用于建立與數(shù)據(jù)源的連接,向數(shù)據(jù)庫提交SQL請(qǐng)求。,5.2.2 JDBC體系結(jié)構(gòu),5.2.3 JDBC驅(qū)動(dòng)程序,J
9、DBC驅(qū)動(dòng)程序按其實(shí)現(xiàn)方式的不同可以分為四種類型,不同類型的驅(qū)動(dòng)程序有著不一樣的使用方法,所以在連接數(shù)據(jù)庫之前,必須選擇一種適當(dāng)?shù)尿?qū)動(dòng)程序。1. JDBC-ODBC橋在JDBC剛剛產(chǎn)生時(shí),JDBC-ODBC橋是很有用的。通過JDBC-ODBC橋,開發(fā)者可以使用JDBC來訪問一個(gè)ODBC數(shù)據(jù)源。JDBC-ODBC橋驅(qū)動(dòng)程序?yàn)镴ava應(yīng)用程序提供了一種把JDBC調(diào)用映射為ODBC調(diào)用的方法。,5.2.3 JDBC驅(qū)動(dòng)程序,2. Java
10、到本地API該類型的驅(qū)動(dòng)程序把客戶機(jī)API上的JDBC調(diào)用轉(zhuǎn)換為其他數(shù)據(jù)庫管理系統(tǒng)的調(diào)用。這也是一種橋驅(qū)動(dòng)程序,它使用Java實(shí)現(xiàn)與數(shù)據(jù)庫廠商專有的API的混合形式來提供數(shù)據(jù)訪問。JDBC驅(qū)動(dòng)將標(biāo)準(zhǔn)的JDBC調(diào)用轉(zhuǎn)變?yōu)閷?duì)數(shù)據(jù)庫API的本地調(diào)用。該驅(qū)動(dòng)程序的工作原理如圖5-3所示。,5.2.3 JDBC驅(qū)動(dòng)程序,3.JDBC網(wǎng)絡(luò)純Java驅(qū)動(dòng)程序這種類型的驅(qū)動(dòng)程序?qū)DBC轉(zhuǎn)換為與數(shù)據(jù)庫管理系統(tǒng)無關(guān)的網(wǎng)絡(luò)協(xié)議,之后這種協(xié)議又被某個(gè)服
11、務(wù)器轉(zhuǎn)換為一種數(shù)據(jù)庫管理系統(tǒng)協(xié)議。這種網(wǎng)絡(luò)服務(wù)器中間件能夠?qū)⑺募僇ava客戶機(jī)連接到多種不同的數(shù)據(jù)庫上。所用的具體協(xié)議取決于提供者。該驅(qū)動(dòng)程序的工作原理如圖所示。,5.2.3 JDBC驅(qū)動(dòng)程序,4.Java到本地?cái)?shù)據(jù)庫協(xié)議該類型的驅(qū)動(dòng)程序?qū)DBC調(diào)用直接轉(zhuǎn)換為DBMS所使用的網(wǎng)絡(luò)協(xié)議。這種方式使用一個(gè)中間數(shù)據(jù)庫訪問服務(wù)器,通過這個(gè)服務(wù)器,可以把Java客戶端連接到多個(gè)數(shù)據(jù)庫服務(wù)器上。該類型的驅(qū)動(dòng)程序最大的好處是省去了在客戶端安裝
12、任何驅(qū)動(dòng)程序的麻煩,只要在服務(wù)器端安裝好數(shù)據(jù)訪問中間服務(wù)器,中間服務(wù)器會(huì)負(fù)責(zé)所有存取數(shù)據(jù)庫時(shí)的必要的轉(zhuǎn)換。該驅(qū)動(dòng)程序的工作原理如圖所示。,,5.2.3 JDBC驅(qū)動(dòng)程序,對(duì)于以上四類驅(qū)動(dòng)程序的選擇,需要考慮構(gòu)建應(yīng)用程序的實(shí)際需要。一般建議不使用橋驅(qū)動(dòng)程序,即第1、2類驅(qū)動(dòng)程序,它們主要是作為純Java驅(qū)動(dòng)程序還沒有上市之前的過渡方案來使用,效率相對(duì)較低,程序的可移植性差。而第3、4類驅(qū)動(dòng)程序是從JDBC訪問數(shù)據(jù)庫的首選方法,它們不但使
13、程序的可移植性提高,達(dá)到跨平臺(tái)的目的,還省去了在客戶端安裝驅(qū)動(dòng)程序的麻煩。,5.2.4 JDBC接口,JDBC的接口分為兩個(gè)層次,一個(gè)是面向程序開發(fā)人員的JDBC API,另一個(gè)是底層的JDBC Driver API。1.面向程序開發(fā)人員的JDBC APIJDBC API被描述成為一組抽象的Java接口,使得應(yīng)用程序可以對(duì)某個(gè)數(shù)據(jù)庫打開連接,執(zhí)行SQL語句并處理結(jié)果。JDBC API主要包括以下接口。1)java.sql.Dri
14、verManager2)java.sql.Connection3)java.sql.Statement4)java.sql.ResultSet,2.JDBC Driver APIJDBC Driver API是面向驅(qū)動(dòng)程序開發(fā)商的編程接口。對(duì)于大多數(shù)數(shù)據(jù)驅(qū)動(dòng)程序來說,僅實(shí)現(xiàn)JDBC API提供的抽象類就可以了。也就是說,每個(gè)驅(qū)動(dòng)程序都必須提供對(duì)于java.sql.Connection、java.sql.Statement、jav
15、a.sql.PreparedStatement和java.sql.ResultSet等主要接口的實(shí)現(xiàn)方法。如果目標(biāo)DBMS提供有OUT參數(shù)的內(nèi)嵌過程,那么還必須提供java.sql.CallableStatement接口。當(dāng)java.sql.DriverManager需要為一個(gè)特定的數(shù)據(jù)庫URL加載驅(qū)動(dòng)程序時(shí),每個(gè)驅(qū)動(dòng)程序就需要提供一個(gè)能實(shí)現(xiàn)java.sql.Driver接口的類。,5.2.4 JDBC接口,5.3 連接數(shù)據(jù)庫,5.3.
16、1 JDBC連接SQL Server數(shù)據(jù)庫5.3.2 JDBC-ODBC連接Access數(shù)據(jù)庫,5.3.1 JDBC連接SQL Server數(shù)據(jù)庫,在JSP中,用戶可以使用JDBC-ODBC橋驅(qū)動(dòng)程序連接SQL Server數(shù)據(jù)庫,也可以使用JDBC的驅(qū)動(dòng)程序Microsoft SQL Server2000 Driver for JDBC來直接連接。這里以第二種方法為例介紹JSP與SQL Server數(shù)據(jù)庫的連接。1.下載并安裝JD
17、BC驅(qū)動(dòng)程序2.加載驅(qū)動(dòng)程序3.創(chuàng)建指定數(shù)據(jù)庫的URL4.建立與數(shù)據(jù)庫的連接5.訪問數(shù)據(jù)庫6.關(guān)閉數(shù)據(jù)庫連接,釋放資源,5.3.2 JDBC-ODBC連接Access數(shù)據(jù)庫,由于目前JDBC還不能實(shí)現(xiàn)對(duì)所有數(shù)據(jù)庫的直接訪問,因?yàn)椴皇撬械臄?shù)據(jù)庫提供商都提供JDBC驅(qū)動(dòng)程序,例如Access,所以JSP訪問Access就只能通過JDBC-ODBC橋,使用ODBC驅(qū)動(dòng)程序?qū)崿F(xiàn)對(duì)數(shù)據(jù)庫的訪問。1.加載驅(qū)動(dòng)程序在JDBC連接到OD
18、BC數(shù)據(jù)庫之前,必須加載JDBC-ODBC橋的驅(qū)動(dòng)程序,代碼如下。Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")該語句使用了Class類(java.lang包)中的方法forName載入該驅(qū)動(dòng)程序的類“sun.jdbc.odbc.JdbcOdbcDriver”,從而創(chuàng)建了該驅(qū)動(dòng)程序的一個(gè)實(shí)例。,5.3.2 JDBC-ODBC連接Access數(shù)據(jù)庫,2.創(chuàng)建數(shù)據(jù)庫連接加載
19、JDBC-ODBC橋的驅(qū)動(dòng)程序后,就可以連接數(shù)據(jù)庫了。首先創(chuàng)建一個(gè)Connection(java.lang包)類的一個(gè)實(shí)例“conn”,并使用DriverManager方法的getConnection來測(cè)試使用“url”指定的數(shù)據(jù)庫連接。創(chuàng)建數(shù)據(jù)庫連接的代碼如下。String url="jdbc:odbc:dataname";String user="";String password=&quo
20、t;";conn=DriverManager.getConnection(url,uesr,password);,5.3.2 JDBC-ODBC連接Access數(shù)據(jù)庫,3.訪問數(shù)據(jù)庫使用Connection類對(duì)象的createStatement方法從指定的數(shù)據(jù)庫連接得到一個(gè)Statement的實(shí)例“stmt”,然后使用這個(gè)實(shí)例的executeQuery()方法來執(zhí)行SQL語句,并將查詢結(jié)果保存到ResultSet對(duì)象“rs”
21、中。其代碼如下:stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet rs = stmt.executeQuery(String sql);,5.3.2 JDBC-ODBC連接Access數(shù)據(jù)庫,4.關(guān)閉數(shù)據(jù)庫連接,釋放資源對(duì)數(shù)據(jù)庫的訪問結(jié)束后,及時(shí)地關(guān)閉ResultSet對(duì)象、Statem
22、ent對(duì)象和Connection對(duì)象,從而釋放所占的資源,實(shí)現(xiàn)代碼與連接SQL Server一樣。,5.4 操作數(shù)據(jù)庫,5.4.1 數(shù)據(jù)查詢5.4.2 數(shù)據(jù)更新5.4.3 數(shù)據(jù)刪除,5.4.1數(shù)據(jù)查詢,在實(shí)際應(yīng)用中,經(jīng)常需要從數(shù)據(jù)庫中查詢某些特定的數(shù)據(jù)信息,如學(xué)號(hào)為1002的學(xué)生信息、地點(diǎn)在北京的倉庫信息等。要實(shí)現(xiàn)指定數(shù)據(jù)信息的查詢,需要給出一個(gè)參數(shù),然后再利用SQL語句就可以將數(shù)據(jù)信息從數(shù)據(jù)庫中查詢出來。,5.4.2 數(shù)據(jù)更新,數(shù)
23、據(jù)更新操作包括修改數(shù)據(jù)、添加數(shù)據(jù)、刪除數(shù)據(jù)。在數(shù)據(jù)庫的維護(hù)過程中經(jīng)常需要修改數(shù)據(jù)表中的記錄信息,如在學(xué)生管理系統(tǒng)中要修改學(xué)生的姓名、年齡等。通常是通過以下兩個(gè)步驟來實(shí)現(xiàn)數(shù)據(jù)的更新。1)創(chuàng)建語句對(duì)象Statement stmt=conn.createStatement(int type,int concurrency ) ;2)執(zhí)行更新String sql="sqlStatement " ; int n
24、umber=stmt.executeUpdate(sql;,5.4.3 數(shù)據(jù)刪除,在數(shù)據(jù)庫的維護(hù)過程中,經(jīng)常要?jiǎng)h除一些已經(jīng)沒用的記錄?!纠縿h除學(xué)生表stu_info中的記錄。本例包括三個(gè)JSP頁面,程序運(yùn)行時(shí)首先在del_1.jsp頁面中選擇要?jiǎng)h除的學(xué)號(hào),程序?qū)⑦x擇的id參數(shù)提交到del_2.jsp頁面,此頁面根據(jù)傳過來的id參數(shù)取出該學(xué)生的詳細(xì)信息記錄,確定確實(shí)要?jiǎng)h除該學(xué)生信息后,將id參數(shù)提交到del_3.jsp頁面,最后由d
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 3 數(shù)據(jù)庫第2章第5題解答
- 第7章數(shù)據(jù)庫
- 第5章數(shù)據(jù)庫的創(chuàng)建和管理
- 數(shù)據(jù)庫第12章 數(shù)據(jù)庫技術(shù)新進(jìn)展
- 第3章創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫文件
- 高級(jí)數(shù)據(jù)庫技術(shù)-第7章_移動(dòng)數(shù)據(jù)庫
- 《數(shù)據(jù)庫》第章習(xí)題答案
- 4 數(shù)據(jù)庫第3章第3、4、5題解答
- 第4章 數(shù)據(jù)庫與表的創(chuàng)建和操作2
- 第2章-數(shù)據(jù)庫和表的基本操作(教學(xué)設(shè)計(jì))
- 第4章 數(shù)據(jù)庫設(shè)計(jì)基礎(chǔ)
- 第7章數(shù)據(jù)庫系統(tǒng)-
- 第4章數(shù)據(jù)庫設(shè)計(jì)基礎(chǔ)
- 第10章 數(shù)據(jù)庫恢復(fù)技術(shù)
- 數(shù)據(jù)庫操作及認(rèn)識(shí)數(shù)據(jù)庫
- 9數(shù)據(jù)庫操作
- 數(shù)據(jù)庫加鎖操作
- 第6章___access數(shù)據(jù)庫實(shí)例開發(fā)
- 第1章 數(shù)據(jù)庫基礎(chǔ)知識(shí)
- 第3章 數(shù)據(jù)庫創(chuàng)建與管理
評(píng)論
0/150
提交評(píng)論