Java Web程序開發(fā)與分析課件:數(shù)據(jù)庫訪問(一)_第1頁
Java Web程序開發(fā)與分析課件:數(shù)據(jù)庫訪問(一)_第2頁
Java Web程序開發(fā)與分析課件:數(shù)據(jù)庫訪問(一)_第3頁
Java Web程序開發(fā)與分析課件:數(shù)據(jù)庫訪問(一)_第4頁
Java Web程序開發(fā)與分析課件:數(shù)據(jù)庫訪問(一)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論