




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaWeb程序設(shè)計(jì)
——數(shù)據(jù)庫(kù)訪問(1)2主要內(nèi)容JDBC概述JDBC連接數(shù)據(jù)庫(kù)的方法JDBC操作數(shù)據(jù)庫(kù)3
與數(shù)據(jù)庫(kù)交互是Web應(yīng)用程序的一個(gè)重要的組成部分。JSP程序使用JDBC(JavaDataBaseConnectivity)技術(shù)來(lái)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接。
JDBC提供了JSP操作數(shù)據(jù)庫(kù)的各種接口,我們將介紹如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接和訪問。4JDBC概述JDBC是一種可用于執(zhí)行SQL語(yǔ)句的JavaAPI,它由一些Java語(yǔ)言編寫的類組成。JDBC為數(shù)據(jù)庫(kù)應(yīng)用開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開發(fā)人員可以用純Java語(yǔ)言編寫完整的數(shù)據(jù)庫(kù)應(yīng)用程序。
JDBC對(duì)于Java開發(fā)人員而言是API,對(duì)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)連接的服務(wù)提供商而言是接口模型。5JDBC概述
JDBC主要的作用有:與數(shù)據(jù)庫(kù)建立連接、發(fā)送SQL語(yǔ)句和處理語(yǔ)句的執(zhí)行結(jié)果;
JDBC是Java操作底層數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)方式,為用戶提供API接口;
通過JDBCAPI可以較方便地向不同類型的數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句,如:SQLServer,Oracle,只要該數(shù)據(jù)庫(kù)支持SQL語(yǔ)法就可以了。6JDBC的使用模型
(1)兩層模型在兩層模型中,一個(gè)JavaApplet或者一個(gè)Java應(yīng)用程序直接同數(shù)據(jù)庫(kù)連接,它們之間需要JDBC驅(qū)動(dòng)器,如下圖所示:客戶端數(shù)據(jù)庫(kù)服務(wù)器(DBMS)JDBC數(shù)據(jù)庫(kù)訪問兩層模型7
(2)三層模型在三層模型中,中間層可以控制訪問并協(xié)同更新數(shù)據(jù)庫(kù);同時(shí),用戶可以使用高層的API,這個(gè)API可以由“中間層”轉(zhuǎn)換為底層的調(diào)用??蛻舳藬?shù)據(jù)庫(kù)服務(wù)器(DBMS)中間服務(wù)器JDBCHttpRMI8Web應(yīng)用程序與數(shù)據(jù)庫(kù)進(jìn)行連接和信息的交換是非常廣泛的。(1)在JDK1.1版本之前,Java語(yǔ)言提供的對(duì)數(shù)據(jù)庫(kù)訪問支持的能力是很弱的,開發(fā)人員使用ODBC(OpenDataBaseConnectivity)接口進(jìn)行數(shù)據(jù)庫(kù)的訪問,但限制了Java語(yǔ)言的跨平臺(tái)能力;(2)JDBC的出現(xiàn)使Java程序?qū)?shù)據(jù)庫(kù)的訪問能力大大提高,使開發(fā)人員很方便地連接幾乎任何一種數(shù)據(jù)庫(kù)。JDBC的體系結(jié)構(gòu)9JDBCAPIJDBCDriverManager數(shù)據(jù)庫(kù)驅(qū)動(dòng)應(yīng)用程序應(yīng)用程序數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)…………JDBC體系結(jié)構(gòu)10驅(qū)動(dòng)類型:
在Java程序中,要通過JDBC來(lái)存取某一特定的數(shù)據(jù)庫(kù),必須有相應(yīng)的JDBC驅(qū)動(dòng)程序,該驅(qū)動(dòng)是由數(shù)據(jù)庫(kù)的生產(chǎn)廠家提供。
首先,Java應(yīng)用程序使用JDBCAPI與JDBC驅(qū)動(dòng)程序Manager交互,JDBCDriverManager載入指定的JDBC驅(qū)動(dòng)程序;然后通過驅(qū)動(dòng)程序訪問數(shù)據(jù)庫(kù)。
11驅(qū)動(dòng)類型:
JDBC驅(qū)動(dòng)程序是用于特定數(shù)據(jù)庫(kù)的一套實(shí)施了JDBC接口的類集,共有4種類型的JDBC驅(qū)動(dòng)程序:
(1)JDBC-ODBC橋驅(qū)動(dòng)程序;
(2)本地API驅(qū)動(dòng)程序;
(3)網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)程序;
(4)本地協(xié)議驅(qū)動(dòng)程序;12(1)JDBC-ODBC橋驅(qū)動(dòng)程序:
JDBC-ODBC橋驅(qū)動(dòng)程序能使客戶端通過JDBC調(diào)用連接到一個(gè)使用ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)。使用這類驅(qū)動(dòng)程序需要用戶安裝數(shù)據(jù)庫(kù)對(duì)應(yīng)的ODBC驅(qū)動(dòng)程序,且該驅(qū)動(dòng)程序不要求和Java兼容。13JDBC應(yīng)用程序數(shù)據(jù)庫(kù)ODBC驅(qū)動(dòng)程序JDBC-ODBCJDBC-ODBCJava代碼本地代碼JDBC-ODBC橋驅(qū)動(dòng)程序14(2)本地API驅(qū)動(dòng)程序:
本地APIJava驅(qū)動(dòng)程序?qū)DBC調(diào)用轉(zhuǎn)換為特定的數(shù)據(jù)庫(kù)調(diào)用,它利用客戶端上的本地代碼庫(kù)與數(shù)據(jù)庫(kù)進(jìn)行直接通信,如下圖:15JDBC應(yīng)用程序數(shù)據(jù)庫(kù)本地代碼庫(kù)本地API驅(qū)動(dòng)程序Java代碼本地代碼本地API驅(qū)動(dòng)程序16(3)網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)程序:
網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)程序能將JDBC的調(diào)用轉(zhuǎn)換為獨(dú)立于數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)協(xié)議,這種類型的驅(qū)動(dòng)程序特別適合于具有中間件的分布式應(yīng)用。其過程如下圖所示:17JDBC應(yīng)用程序JDBC網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)程序Java代碼數(shù)據(jù)庫(kù)JDBC驅(qū)動(dòng)程序Java中間件本地代碼JDBC網(wǎng)絡(luò)驅(qū)動(dòng)程序Internet網(wǎng)絡(luò)Internet網(wǎng)絡(luò)18(4)本地協(xié)議驅(qū)動(dòng)程序:
本地協(xié)議驅(qū)動(dòng)程序能將JDBC調(diào)用轉(zhuǎn)換為數(shù)據(jù)庫(kù)直接使用的網(wǎng)絡(luò)協(xié)議,使用JavaSocket來(lái)連接數(shù)據(jù)庫(kù),適合于通過網(wǎng)絡(luò)使用后臺(tái)數(shù)據(jù)庫(kù)的Applet程序。其過程如下圖所示:19JDBC應(yīng)用程序本地協(xié)議驅(qū)動(dòng)程序數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)引擎Java代碼本地代碼本地協(xié)議驅(qū)動(dòng)程序Internet網(wǎng)絡(luò)20主要內(nèi)容JDBC概述JDBC操作數(shù)據(jù)庫(kù)21主要內(nèi)容JDBC概述JDBC操作數(shù)據(jù)庫(kù)22JDBC的接口分為兩個(gè)層次:(1)一是面向程序開發(fā)人員的JDBCAPI;(2)另一個(gè)是底層的JDBCDriverAPI。JDBCApplicationJDBCAPIJDBCManagerJDBCDriverAPIDriverADriverB……數(shù)據(jù)庫(kù)1數(shù)據(jù)庫(kù)223
JDBCAPI是應(yīng)用程序開發(fā)人員訪問數(shù)據(jù)庫(kù)信息的接口,主要包括6種接口:
java.sql.DriverManager:處理驅(qū)動(dòng)程序的調(diào)用;
java.sql.Connection:處理特定的數(shù)據(jù)庫(kù)連接;
java.sql.Statement:代表一個(gè)特定的SQL執(zhí)行語(yǔ)句;
java.sql.PreparedStatement:代表一個(gè)預(yù)編譯的SQL執(zhí)行語(yǔ)句;
java.sql.CallableStatment:代表一個(gè)存儲(chǔ)過程的SQL調(diào)用語(yǔ)句;
java.sql.ResultSet:代表SQL語(yǔ)句的執(zhí)行結(jié)果;24使用JDBC訪問數(shù)據(jù)庫(kù)的過程JDBC訪問數(shù)據(jù)庫(kù)過程可以分為連接數(shù)據(jù)庫(kù)和操作數(shù)據(jù)庫(kù)兩個(gè)步驟,如下圖所示:驅(qū)動(dòng)管理器連接SQL語(yǔ)句結(jié)果集加載JDBC驅(qū)動(dòng)程序建立數(shù)據(jù)庫(kù)連接發(fā)送SQL查詢獲得查詢結(jié)果25
(1)JDBC連接數(shù)據(jù)庫(kù)
JDBC連接數(shù)據(jù)庫(kù)分為:加載驅(qū)動(dòng)程序和建立連接加載驅(qū)動(dòng)程序?yàn)榱伺c特定的數(shù)據(jù)源或者數(shù)據(jù)庫(kù)相連,JDBC必須加載相應(yīng)的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序可以是JDBC-ODBCBridge驅(qū)動(dòng)程序、JDBC通過網(wǎng)絡(luò)協(xié)議的驅(qū)動(dòng)程序、或者是數(shù)據(jù)庫(kù)廠商提供的驅(qū)動(dòng)程序??梢允褂肅lass.forName()方法顯式加載一個(gè)驅(qū)動(dòng)程序:StringDriverName=“com.mysql.jdbc.Driver”Class.forName(DriverName)26
建立連接
DriverManager類的getConnection()方法用于建立與某個(gè)數(shù)據(jù)源的連接:
Stringurl=“jdbc:mysql://localhost/sql_test”
Connectioncon=
DriverManager.getConnection(url)
其中,另一個(gè)getConnection(Stringurl,Stringuser,Stringpassword),可以帶有密碼和用戶名。通信子協(xié)議、主機(jī)名、端口名、數(shù)據(jù)庫(kù)名27例:用下面的實(shí)例來(lái)測(cè)試連接SQLServer數(shù)據(jù)庫(kù)是否成功。<%@pagelanguage="java"contentType="text/html;charset=gb2312"pageEncoding="gb2312"%><%@pageimport="java.sql.*"%>28<body>
<%
Stringurl="jdbc:microsoft:sqlserver://localhost:1433";
Connectionconn=null;
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}catch(ClassNotFoundExceptione){
out.println("加載驅(qū)動(dòng)器類時(shí)出現(xiàn)異常");
}加載驅(qū)動(dòng)程序29
try{
conn=null
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 印出來(lái) 印出來(lái)(教學(xué)設(shè)計(jì))-2024-2025學(xué)年蘇少版美術(shù)二年級(jí)上冊(cè)001
- 全國(guó)閩教版初中信息技術(shù)八年級(jí)下冊(cè)第一單元第2課《體驗(yàn)開源硬件與編程工具應(yīng)用》教學(xué)設(shè)計(jì)
- 七年級(jí)英語(yǔ)下冊(cè) Unit 7 The Birthday Topic 3 Everyone had a good time Section C教學(xué)設(shè)計(jì) (新版)仁愛版
- 情有獨(dú)“鐘”班本課程
- 項(xiàng)目總監(jiān)工程管理策劃匯報(bào)
- 預(yù)防骨科患者跌倒的對(duì)策
- Unit 1 Making friends (教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)001
- 高校宿舍輔導(dǎo)員述職報(bào)告
- Starter Unit 3 Section B project design your own farm教學(xué)設(shè)計(jì)- 2024-2025學(xué)年人教版七年級(jí)英語(yǔ)上冊(cè)001
- 人教部編版 (五四制)二年級(jí)上冊(cè)語(yǔ)文園地五教學(xué)設(shè)計(jì)
- 中學(xué)三年發(fā)展規(guī)劃(2025年-2027年)
- 數(shù)字金融嵌入下金融素養(yǎng)與家庭金融風(fēng)險(xiǎn)的關(guān)系探討
- 飼料廠三級(jí)安全教育訓(xùn)練
- 半導(dǎo)體工廠工程施工組織設(shè)計(jì)方案
- 初級(jí)心理治療師歷年考試真題試題庫(kù)(含答案解析)
- 2025年《專利法》考試題庫(kù)及答案
- 護(hù)理學(xué)職業(yè)生涯規(guī)劃
- 中國(guó)全國(guó)全省含各城市全套可編輯矢量地圖素材包下載
- 2015-2024年十年高考生物真題分類匯編專題26實(shí)驗(yàn)與探究(全國(guó))
- 早產(chǎn)臨床防治指南(2024版)解讀
- 全國(guó)身份證前六位、區(qū)號(hào)、郵編-編碼大全
評(píng)論
0/150
提交評(píng)論