版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
JavaWeb程序設(shè)計
——數(shù)據(jù)庫訪問(1)2主要內(nèi)容JDBC概述JDBC連接數(shù)據(jù)庫的方法JDBC操作數(shù)據(jù)庫3
與數(shù)據(jù)庫交互是Web應(yīng)用程序的一個重要的組成部分。JSP程序使用JDBC(JavaDataBaseConnectivity)技術(shù)來實現(xiàn)與數(shù)據(jù)庫的連接。
JDBC提供了JSP操作數(shù)據(jù)庫的各種接口,我們將介紹如何實現(xiàn)數(shù)據(jù)庫的連接和訪問。4JDBC概述JDBC是一種可用于執(zhí)行SQL語句的JavaAPI,它由一些Java語言編寫的類組成。JDBC為數(shù)據(jù)庫應(yīng)用開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。
JDBC對于Java開發(fā)人員而言是API,對實現(xiàn)與數(shù)據(jù)庫連接的服務(wù)提供商而言是接口模型。5JDBC概述
JDBC主要的作用有:與數(shù)據(jù)庫建立連接、發(fā)送SQL語句和處理語句的執(zhí)行結(jié)果;
JDBC是Java操作底層數(shù)據(jù)庫的標(biāo)準(zhǔn)方式,為用戶提供API接口;
通過JDBCAPI可以較方便地向不同類型的數(shù)據(jù)庫發(fā)送SQL語句,如:SQLServer,Oracle,只要該數(shù)據(jù)庫支持SQL語法就可以了。6JDBC的使用模型
(1)兩層模型在兩層模型中,一個JavaApplet或者一個Java應(yīng)用程序直接同數(shù)據(jù)庫連接,它們之間需要JDBC驅(qū)動器,如下圖所示:客戶端數(shù)據(jù)庫服務(wù)器(DBMS)JDBC數(shù)據(jù)庫訪問兩層模型7
(2)三層模型在三層模型中,中間層可以控制訪問并協(xié)同更新數(shù)據(jù)庫;同時,用戶可以使用高層的API,這個API可以由“中間層”轉(zhuǎn)換為底層的調(diào)用??蛻舳藬?shù)據(jù)庫服務(wù)器(DBMS)中間服務(wù)器JDBCHttpRMI8Web應(yīng)用程序與數(shù)據(jù)庫進行連接和信息的交換是非常廣泛的。(1)在JDK1.1版本之前,Java語言提供的對數(shù)據(jù)庫訪問支持的能力是很弱的,開發(fā)人員使用ODBC(OpenDataBaseConnectivity)接口進行數(shù)據(jù)庫的訪問,但限制了Java語言的跨平臺能力;(2)JDBC的出現(xiàn)使Java程序?qū)?shù)據(jù)庫的訪問能力大大提高,使開發(fā)人員很方便地連接幾乎任何一種數(shù)據(jù)庫。JDBC的體系結(jié)構(gòu)9JDBCAPIJDBCDriverManager數(shù)據(jù)庫驅(qū)動應(yīng)用程序應(yīng)用程序數(shù)據(jù)庫數(shù)據(jù)庫…………JDBC體系結(jié)構(gòu)10驅(qū)動類型:
在Java程序中,要通過JDBC來存取某一特定的數(shù)據(jù)庫,必須有相應(yīng)的JDBC驅(qū)動程序,該驅(qū)動是由數(shù)據(jù)庫的生產(chǎn)廠家提供。
首先,Java應(yīng)用程序使用JDBCAPI與JDBC驅(qū)動程序Manager交互,JDBCDriverManager載入指定的JDBC驅(qū)動程序;然后通過驅(qū)動程序訪問數(shù)據(jù)庫。
11驅(qū)動類型:
JDBC驅(qū)動程序是用于特定數(shù)據(jù)庫的一套實施了JDBC接口的類集,共有4種類型的JDBC驅(qū)動程序:
(1)JDBC-ODBC橋驅(qū)動程序;
(2)本地API驅(qū)動程序;
(3)網(wǎng)絡(luò)協(xié)議驅(qū)動程序;
(4)本地協(xié)議驅(qū)動程序;12(1)JDBC-ODBC橋驅(qū)動程序:
JDBC-ODBC橋驅(qū)動程序能使客戶端通過JDBC調(diào)用連接到一個使用ODBC驅(qū)動程序的數(shù)據(jù)庫。使用這類驅(qū)動程序需要用戶安裝數(shù)據(jù)庫對應(yīng)的ODBC驅(qū)動程序,且該驅(qū)動程序不要求和Java兼容。13JDBC應(yīng)用程序數(shù)據(jù)庫ODBC驅(qū)動程序JDBC-ODBCJDBC-ODBCJava代碼本地代碼JDBC-ODBC橋驅(qū)動程序14(2)本地API驅(qū)動程序:
本地APIJava驅(qū)動程序?qū)DBC調(diào)用轉(zhuǎn)換為特定的數(shù)據(jù)庫調(diào)用,它利用客戶端上的本地代碼庫與數(shù)據(jù)庫進行直接通信,如下圖:15JDBC應(yīng)用程序數(shù)據(jù)庫本地代碼庫本地API驅(qū)動程序Java代碼本地代碼本地API驅(qū)動程序16(3)網(wǎng)絡(luò)協(xié)議驅(qū)動程序:
網(wǎng)絡(luò)協(xié)議驅(qū)動程序能將JDBC的調(diào)用轉(zhuǎn)換為獨立于數(shù)據(jù)庫的網(wǎng)絡(luò)協(xié)議,這種類型的驅(qū)動程序特別適合于具有中間件的分布式應(yīng)用。其過程如下圖所示:17JDBC應(yīng)用程序JDBC網(wǎng)絡(luò)協(xié)議驅(qū)動程序Java代碼數(shù)據(jù)庫JDBC驅(qū)動程序Java中間件本地代碼JDBC網(wǎng)絡(luò)驅(qū)動程序Internet網(wǎng)絡(luò)Internet網(wǎng)絡(luò)18(4)本地協(xié)議驅(qū)動程序:
本地協(xié)議驅(qū)動程序能將JDBC調(diào)用轉(zhuǎn)換為數(shù)據(jù)庫直接使用的網(wǎng)絡(luò)協(xié)議,使用JavaSocket來連接數(shù)據(jù)庫,適合于通過網(wǎng)絡(luò)使用后臺數(shù)據(jù)庫的Applet程序。其過程如下圖所示:19JDBC應(yīng)用程序本地協(xié)議驅(qū)動程序數(shù)據(jù)庫數(shù)據(jù)庫引擎Java代碼本地代碼本地協(xié)議驅(qū)動程序Internet網(wǎng)絡(luò)20主要內(nèi)容JDBC概述JDBC操作數(shù)據(jù)庫21主要內(nèi)容JDBC概述JDBC操作數(shù)據(jù)庫22JDBC的接口分為兩個層次:(1)一是面向程序開發(fā)人員的JDBCAPI;(2)另一個是底層的JDBCDriverAPI。JDBCApplicationJDBCAPIJDBCManagerJDBCDriverAPIDriverADriverB……數(shù)據(jù)庫1數(shù)據(jù)庫223
JDBCAPI是應(yīng)用程序開發(fā)人員訪問數(shù)據(jù)庫信息的接口,主要包括6種接口:
java.sql.DriverManager:處理驅(qū)動程序的調(diào)用;
java.sql.Connection:處理特定的數(shù)據(jù)庫連接;
java.sql.Statement:代表一個特定的SQL執(zhí)行語句;
java.sql.PreparedStatement:代表一個預(yù)編譯的SQL執(zhí)行語句;
java.sql.CallableStatment:代表一個存儲過程的SQL調(diào)用語句;
java.sql.ResultSet:代表SQL語句的執(zhí)行結(jié)果;24使用JDBC訪問數(shù)據(jù)庫的過程JDBC訪問數(shù)據(jù)庫過程可以分為連接數(shù)據(jù)庫和操作數(shù)據(jù)庫兩個步驟,如下圖所示:驅(qū)動管理器連接SQL語句結(jié)果集加載JDBC驅(qū)動程序建立數(shù)據(jù)庫連接發(fā)送SQL查詢獲得查詢結(jié)果25
(1)JDBC連接數(shù)據(jù)庫
JDBC連接數(shù)據(jù)庫分為:加載驅(qū)動程序和建立連接加載驅(qū)動程序為了與特定的數(shù)據(jù)源或者數(shù)據(jù)庫相連,JDBC必須加載相應(yīng)的驅(qū)動程序。驅(qū)動程序可以是JDBC-ODBCBridge驅(qū)動程序、JDBC通過網(wǎng)絡(luò)協(xié)議的驅(qū)動程序、或者是數(shù)據(jù)庫廠商提供的驅(qū)動程序??梢允褂肅lass.forName()方法顯式加載一個驅(qū)動程序:StringDriverName=“com.mysql.jdbc.Driver”Class.forName(DriverName)26
建立連接
DriverManager類的getConnection()方法用于建立與某個數(shù)據(jù)源的連接:
Stringurl=“jdbc:mysql://localhost/sql_test”
Connectioncon=
DriverManager.getConnection(url)
其中,另一個getConnection(Stringurl,Stringuser,Stringpassword),可以帶有密碼和用戶名。通信子協(xié)議、主機名、端口名、數(shù)據(jù)庫名27例:用下面的實例來測試連接SQLServer數(shù)據(jù)庫是否成功。<%@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ū)動器類時出現(xiàn)異常");
}加載驅(qū)動程序29
try{
conn=null
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版八年級物理上冊《第四章光現(xiàn)象》章末檢測卷帶答案
- 教案-市場營銷學(xué)
- 酶解法提高藥用植物次生代謝物
- 新滬科版數(shù)學(xué)八年級上冊同步練習(xí)(全冊分章節(jié))含答案
- 最經(jīng)典凈水廠施工組織設(shè)計
- 能源大數(shù)據(jù)分析理論與實踐 課件 12.電力大數(shù)據(jù)分析
- 高一化學(xué)成長訓(xùn)練:第一單元化學(xué)反應(yīng)速率與反應(yīng)限度
- 第4課《孫權(quán)勸學(xué)》課件-2024-2025學(xué)年統(tǒng)編版語文七年級下冊
- 2024高中地理第二章區(qū)域生態(tài)環(huán)境建設(shè)第2節(jié)森林的開發(fā)和保護-以亞馬孫熱帶雨林為例精練含解析新人教必修3
- 2024高中語文精讀課文二第5課2達爾文:興趣與恒心是科學(xué)發(fā)現(xiàn)的動力二作業(yè)含解析新人教版選修中外傳記蚜
- 推動架機械加工工序卡片
- 重慶市綦江區(qū)篆塘鎮(zhèn)白坪村建筑用砂巖礦采礦權(quán)評估報告
- 甘肅社火100首歌詞
- 行政查房情況記錄表
- GB/T 2315-2000電力金具標(biāo)稱破壞載荷系列及連接型式尺寸
- 腹主動脈瘤的護理查房
- 內(nèi)部往來轉(zhuǎn)賬通知單
- 星級酒店每日防火巡查記錄本
- 中石化erp系統(tǒng)操作手冊
- 部編人教版歷史七年級下冊教學(xué)計劃及進度表
- 高中化學(xué)必修1思維導(dǎo)圖(Word版zj)
評論
0/150
提交評論