《數(shù)據(jù)庫(kù)連接》PPT課件
《《數(shù)據(jù)庫(kù)連接》PPT課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫(kù)連接》PPT課件(40頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第六章 JSP中數(shù)據(jù)庫(kù)的使用主 講:曹 瑩 重點(diǎn)+難點(diǎn)l數(shù)據(jù)庫(kù)環(huán)境的配置l利用JDBC驅(qū)動(dòng)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn) 6.1 數(shù)據(jù)庫(kù)和常用的SQL語(yǔ)句l數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是一個(gè)軟件系統(tǒng),它具有存儲(chǔ)、檢索和修改數(shù)據(jù)的功能,數(shù)據(jù)庫(kù)關(guān)聯(lián)系統(tǒng)具有4個(gè)發(fā)展階段。層次型、網(wǎng)絡(luò)型、關(guān)系型和關(guān)系對(duì)象型。l我們使用的是SQL Server2000,mysqllJDBC是Sun公司提供的一組類(lèi)和接口,程序員可以利用這組類(lèi)和接口與數(shù)據(jù)庫(kù)進(jìn)行通信。JDBC接口,非常方便的實(shí)現(xiàn)了在java中連接數(shù)據(jù)庫(kù) SQL語(yǔ)句l創(chuàng)建刪除數(shù)據(jù)庫(kù)create database bookdrop database bookl創(chuàng)建刪除表cr
2、eate table item (item_Id int, item_name varchar(20)drop table iteml更改表的結(jié)構(gòu)alter table item add item_dis varchar(100)alter table item drop item SQL語(yǔ)句l創(chuàng)建刪除視圖create view products(productname,quantity,listprice) as select p.productname,v.qty,i.listprice from product p,inventory v,item i where p.productId
3、=i.productid and itwmid=v.itemiddelete view productsl插入一條語(yǔ)句insert語(yǔ)句是用來(lái)向表中添加記錄的insert into item values(1,“計(jì)算機(jī)”,“計(jì)算機(jī)工程類(lèi)的書(shū)籍”) SQL語(yǔ)句l在表中刪除數(shù)據(jù)delete刪除表中已經(jīng)存在的一條或多條記錄delete from item where item_Id=1;l更新表中的數(shù)據(jù)update語(yǔ)句用來(lái)修改表中已經(jīng)存在的一條或多條記錄update item set intem_name=“法學(xué)” where item_Id=1 SQL語(yǔ)句l條件子句(1)where語(yǔ)句使用where
4、可以選擇滿(mǎn)足條件的特定記錄(2)in和not in選擇列值與列值表中某一個(gè)值相等的相關(guān)信息(3)betweenand和not betweenand選擇列值在某個(gè)范圍的記錄(4)like和not like(5)is null和not null(6)邏輯運(yùn)算and和or(7)order by語(yǔ)句 6.2 JDBC技術(shù)和驅(qū)動(dòng)程序6.2.1JDBC技術(shù)介紹lJDBC API為Java開(kāi)發(fā)人員使用數(shù)據(jù)庫(kù)提供了統(tǒng)一的編程接口,它由一組Java類(lèi)和接口組成。JDBC API使得開(kāi)發(fā)人員可與使用純Java語(yǔ)言的方式來(lái)連接數(shù)據(jù)庫(kù),并進(jìn)行操作。l企業(yè)級(jí)環(huán)境中進(jìn)行的數(shù)據(jù)庫(kù)操作遠(yuǎn)遠(yuǎn)不只是 連接數(shù)據(jù)庫(kù)并執(zhí)行語(yǔ)句,還需要
5、考慮其它方面的要求。包括使用連接緩沖池來(lái)優(yōu)化資源的使用,實(shí)現(xiàn)分布式事務(wù)處理。 JDBC 3.0 版本包含了兩個(gè)包:Java.sql和Javax.sqllJava.sql 這個(gè)包中的類(lèi)和接口主要是針對(duì)基本的數(shù)據(jù)庫(kù)編程服務(wù),如生成連接、執(zhí)行語(yǔ)句、以及準(zhǔn)備語(yǔ)句和運(yùn)行批處理查詢(xún)等。同時(shí)也有一些 高級(jí)操作,比如批處理更新、事物隔離和可滾動(dòng)結(jié)果集等。lJavax.sql 這個(gè)包主要是為數(shù)據(jù)庫(kù)方面的高級(jí)操作提供接口和類(lèi)。如連接管理類(lèi)、創(chuàng)建語(yǔ)句類(lèi) 6.2.2數(shù)據(jù)庫(kù)驅(qū)動(dòng)器程序l數(shù)據(jù)庫(kù)廠商一般會(huì)提供一組API訪問(wèn)數(shù)據(jù)庫(kù),有些廠商也專(zhuān)門(mén)提供數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,并且這些產(chǎn)品除了執(zhí)行驅(qū)動(dòng)的功能外,往往還提供一些額外的服務(wù)。
6、lJDBC驅(qū)動(dòng)程序是數(shù)據(jù)庫(kù)廠商根據(jù)Sun公司提供的JDBC接口標(biāo)準(zhǔn)提供的一組實(shí)現(xiàn)類(lèi)。JDBC 驅(qū)動(dòng)程序的類(lèi)型 JDBC-ODBC橋驅(qū)動(dòng)程序及ODBC驅(qū)動(dòng)程序 本地API部分Java驅(qū)動(dòng)程序 JDBC-Net 純Java驅(qū)動(dòng)程序 本地協(xié)議純Java驅(qū)動(dòng)程序 有4種類(lèi)型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序lJDBC-ODBC橋 通過(guò)JDBC-ODBC橋,開(kāi)發(fā)者可以使用JDBC訪問(wèn)一個(gè)ODBC數(shù)據(jù)源。 JDBC-ODBC橋驅(qū)動(dòng)程序?yàn)镴ava應(yīng)用程序提供了一種把JDBC調(diào)用映射成ODBC調(diào)用的方法。因此在客戶(hù)端計(jì)算機(jī)上安裝一個(gè)ODBC驅(qū)動(dòng)。 缺點(diǎn):效率相對(duì)底下。l部分Java,部分本機(jī)驅(qū)動(dòng)程序 這種驅(qū)動(dòng)程序使用Java實(shí)
7、現(xiàn)與數(shù)據(jù)庫(kù)廠商專(zhuān)有API混合形式來(lái)提供數(shù)據(jù)訪問(wèn)。它比JDBC-ODBC橋的形式快。在這種方勢(shì)力,必須在內(nèi)閣運(yùn)行Java應(yīng)用程序的客戶(hù)端安裝驅(qū)動(dòng)程序和廠商專(zhuān)有的API?,F(xiàn)在大多數(shù)的數(shù)據(jù)庫(kù)廠商都在其數(shù)據(jù)庫(kù)產(chǎn)品中提供該驅(qū)動(dòng)程序 l中間數(shù)據(jù)訪問(wèn)服務(wù)器 這種形式使用中間數(shù)據(jù)訪問(wèn)服務(wù)器。通過(guò)這種服務(wù)器,他可以把Java客戶(hù)端連接到多個(gè)數(shù)據(jù)庫(kù)服務(wù)器上。他不需要客戶(hù)端的數(shù)據(jù)庫(kù)驅(qū)動(dòng),而是使用網(wǎng)絡(luò)-服務(wù)器中層來(lái)訪問(wèn)一個(gè)數(shù)據(jù)庫(kù)。該類(lèi)型的驅(qū)動(dòng)程序使用網(wǎng)絡(luò)協(xié)議,并完全通過(guò)Java驅(qū)動(dòng),他為Java應(yīng)用程序提供了一種進(jìn)行JDBC調(diào)用的機(jī)制。l純Java驅(qū)動(dòng)程序 這種方式使用廠商專(zhuān)有的網(wǎng)絡(luò)協(xié)議把JDBC API調(diào)用轉(zhuǎn)換稱(chēng)直
8、接的網(wǎng)絡(luò)調(diào)用,這種方式的本質(zhì)是使用套接字進(jìn)行編程。純Java驅(qū)動(dòng)運(yùn)行在客戶(hù)端,并且直接訪問(wèn)數(shù)據(jù)庫(kù)。它的使用比較簡(jiǎn)單,客戶(hù)端不需要安裝任何中間件或者運(yùn)行庫(kù)?,F(xiàn)在大部分廠商都提供第4類(lèi)驅(qū)動(dòng)程序的支持。 四種訪問(wèn)方式比較l第1、2類(lèi)驅(qū)動(dòng)程序是數(shù)據(jù)庫(kù)廠商為提供第4類(lèi)JDBC驅(qū)動(dòng)程序的一種過(guò)渡解決方案,例如通過(guò)JDBC訪問(wèn)Access數(shù)據(jù)庫(kù)。l第3類(lèi)驅(qū)動(dòng)程序適合那種需要同時(shí)連接多個(gè)不同種類(lèi)的數(shù)據(jù)庫(kù), 并且對(duì)并發(fā)連接要求高的三層應(yīng)用程序中。l第1、2、4類(lèi)驅(qū)動(dòng)程序常用于C/S模式的應(yīng)用程序中。l訪問(wèn)速度:241穩(wěn)定性:421 6.3 JDBC常用接口使用介紹1.Driver接口 每個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序必須實(shí)現(xiàn)
9、Driver接口。對(duì)于JSP開(kāi)發(fā)者而言,只要使用Driver接口就可以了。在編程中要連接數(shù)據(jù)庫(kù),必須先裝載特定廠商提供的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序(Driver),不同驅(qū)動(dòng)程序的裝載方法。 使用JDBC-ODBC BridgeDriver,這樣裝載:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); 對(duì)于Access適用 使用 JDBC Driver,這樣裝載 Class.forName(“jdbc.driver_class_name”);在使用Class.forName之前,先適用import語(yǔ)句導(dǎo)入java.sql包。 import java.sql.*;裝載
10、MS SQLServer 驅(qū)動(dòng):Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);裝載 MySQL JDBC驅(qū)動(dòng):Class.forName(“org.git.mm.mysql.Driver”);裝載 Oracle JDBC驅(qū)動(dòng):Class.forName(“oracle.jdbc.driver.OracleDriver”); 2. DriverManager(驅(qū)動(dòng)程序管理器) DriverManager 是JDBC(Java數(shù)據(jù)庫(kù)連接)的管理層。作用于用戶(hù)和驅(qū)動(dòng)程序之間。DriverManager 可以跟蹤驅(qū)動(dòng)程序,并
11、在數(shù)據(jù)庫(kù)和相應(yīng)驅(qū)動(dòng)程序之間建立連接。 DriverManager激發(fā)getConnection()方法時(shí), DriverManager首先從它已加載的驅(qū)動(dòng)程序池中找到一個(gè)可以接受該數(shù)據(jù)庫(kù)URL的驅(qū)動(dòng)程序,然后請(qǐng)求該驅(qū)動(dòng)程序使用相關(guān)的數(shù)據(jù)庫(kù)URL連接到數(shù)據(jù)庫(kù)中,于是getConnection()方法建立了與數(shù)據(jù)庫(kù)連接。 DriverManager.getConnection()方法(靜態(tài)的)static connection getConnection(String url);static connection getConnection(String url,String info);stat
12、ic connection getConnection(String url,String name,String pwd);URL:類(lèi)似于其他場(chǎng)合的URL,語(yǔ)法如下:jdbc:jdbc:表示 協(xié)議,他是唯一的,JDBC只有這一種協(xié)議子協(xié)議:主要用于識(shí)別數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,也就是說(shuō),不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的子協(xié)議不同子名:它屬于專(zhuān)門(mén)的驅(qū)動(dòng)程序,不同的專(zhuān)有驅(qū)動(dòng)程序可以采用不同的實(shí)現(xiàn) 數(shù)據(jù)庫(kù)連接字符串?dāng)?shù)據(jù)庫(kù) 驅(qū)動(dòng)程序名稱(chēng)URLMicrosoft Access sun.jdbc.odbc.JdbcOdbcDriver jdbc:odbc:studentMicrosoft Sql Server 2000 c
13、om.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:microsoft:sqlserver:/localhost:1433;databasename=studentMicrosoft Sql Server 2005 com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver:/localhost:2667;databasename=student Oracle 9i oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:localhost:152
14、1:studentjdbc:oracle:oci:student 3.Connection一個(gè)Connection表示與一個(gè)特定數(shù)據(jù)庫(kù)的會(huì)話。 Connection對(duì)象代表與數(shù)據(jù)庫(kù)的連接。 連接過(guò)程包括所執(zhí)行的SQL語(yǔ)句和在連接上所返回的結(jié)果。 Connection conn= DriverManager.getConnection(url,login,pwd); Connection接口是JSP編程中使用最頻繁的接口之一。Connection接口中常用到的方法: close():關(guān)閉連接。isclose():判斷連接是否關(guān)閉。 createStatement():創(chuàng)建SQL語(yǔ)句對(duì)象。 get
15、AutoCommit():獲得當(dāng)前自動(dòng)提交狀態(tài)。commit():提交對(duì)數(shù)據(jù)庫(kù)的更改,使更改生效。setAutoCommit(boolean value):設(shè)置連接是否處于自動(dòng)提交狀態(tài)。rollback():回滾上一次提交或回滾操作后的所有更改prepareStatement(String sql):可以被預(yù)編譯存放在prepareStatement對(duì)象中,該對(duì)象用于有效地多次執(zhí)行該語(yǔ)句。prepareCall(String sql):返回值是創(chuàng)建的CallableStatement 對(duì)象,可以用來(lái)處理一個(gè)SQL存儲(chǔ)過(guò)程setReadOnly():可以把一個(gè)連接設(shè)置為只讀狀態(tài)。isReadOn
16、ly():檢測(cè)該連接是否存在只讀狀態(tài) 4.StatementStatement對(duì)象代表SQL語(yǔ)句。可用于將SQL語(yǔ)句發(fā)送至數(shù)據(jù)庫(kù)。Statement對(duì)象存在3種。 Statement對(duì)象,用來(lái)執(zhí)行基本的SQL語(yǔ)句。 PrepareStatement對(duì)象,從Statement繼承,用于提供可以查詢(xún)信息一起預(yù)編譯的語(yǔ)句。 CallableStatement,它繼承自PrepareStatement,用來(lái)執(zhí)行數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程。Statement常用的方法: cancle():用于一個(gè)線程取消另一個(gè)線程正在執(zhí)行的一條語(yǔ)句。 close():用來(lái)關(guān)閉語(yǔ)句。同時(shí)立即釋放該語(yǔ)句的數(shù)據(jù)庫(kù)和JDBC資源。如果
17、它有相應(yīng)產(chǎn)生的ResultSet,則ResultSet也會(huì)被關(guān)閉。execute(String sql): 執(zhí)行一條可能返回多個(gè)結(jié)果的SQL語(yǔ)句。返回布爾值。若有ResultSet,則返回true,如果它是一個(gè)更新數(shù)據(jù)或沒(méi)有其它結(jié)果,則返回false。executeQurey(String sql):執(zhí)行一個(gè)返回單個(gè)ResultSet的SQL語(yǔ)句,返回值是由查詢(xún)產(chǎn)生的數(shù)據(jù)ResultSet。executeUpdate(String sql):執(zhí)行一條insert、update或delete語(yǔ)句或是沒(méi)有返回值的SQL語(yǔ)句。該方法返回語(yǔ)句影響的行數(shù),如果是沒(méi)有影響的行數(shù)則返回0。 getResul
18、tSet():得到當(dāng)前的ResultSet的結(jié)果。getUpdateCount():得到更新的數(shù)量,如果結(jié)果是一個(gè)ResultSet或沒(méi)有其他結(jié)果,則返回-1。5.PrepareStatementPrepareStatement類(lèi)對(duì)象封裝一條預(yù)編譯的SQL語(yǔ)句,用于高效地多次執(zhí)行該語(yǔ)句。常用的方法:clearParameters():立即釋放當(dāng)前參數(shù)值使用的資源execute():執(zhí)行一條可能返回多個(gè)結(jié)果的SQL語(yǔ)句,返回一個(gè)布爾值。如果下一個(gè)結(jié)果是ResultSet,則返回true,否則返回false executeQuery():執(zhí)行準(zhǔn)備好的SQL查詢(xún)并返回ResultSet execut
19、eUpdate():執(zhí)行一條insert、update或delete語(yǔ)句或是沒(méi)有返回值的SQL語(yǔ)句。setBoolean(int parameterIndex,boolean x);setByte(int parameterIndex,byte x)setBytes(int parameterIndex,byte x)setDate(int parameterIndex,Date x)setDouble(int parameterIndex,double x)setFloat(int parameterIndex,float x)setInt(int parameterIndex,int x)
20、setShort(int parameterIndex,short x) 6.ResultSet ResultSet 類(lèi)可用來(lái)接受執(zhí)行SQL查詢(xún)語(yǔ)句后得到的記錄集。 JDBC連接數(shù)據(jù)庫(kù)流程開(kāi) 始導(dǎo)入 java.sql包 加載并注冊(cè)驅(qū)動(dòng)程序創(chuàng)建一個(gè) Connection 對(duì)象創(chuàng)建一個(gè) Statement 對(duì)象執(zhí)行SQL語(yǔ)句 關(guān)閉ResultSet 對(duì)象關(guān)閉Statement對(duì)象關(guān)閉連接結(jié) 束使用ResultSet對(duì)象 程序演示 演示創(chuàng)建數(shù)據(jù)庫(kù)連接的具體步驟 錯(cuò)誤提示lsocket establish error錯(cuò)誤的解決方法檢查SQL Server服務(wù)是否啟動(dòng)對(duì)于Windows XP、Windows 2003操作系統(tǒng),確保SQL Servler 2000升級(jí)至sp3以上版本(用netstat n -a)查看端口是否打開(kāi)如果系統(tǒng)安裝了防火墻軟件,請(qǐng)暫時(shí)關(guān)閉實(shí)時(shí)監(jiān)控選項(xiàng) 記錄查詢(xún)實(shí)例 實(shí)例 向數(shù)據(jù)庫(kù)中插入記錄 代碼 刪除一條記錄 代碼 修改一條記錄:
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年防凍教育安全教育班會(huì)全文PPT
- 2025年寒假安全教育班會(huì)全文PPT
- 初中2025年冬季防溺水安全教育全文PPT
- 初中臘八節(jié)2024年專(zhuān)題PPT
- 主播直播培訓(xùn)提升人氣的方法正確的直播方式如何留住游客
- XX地區(qū)機(jī)關(guān)工委2024年度年終黨建工作總結(jié)述職匯報(bào)
- 心肺復(fù)蘇培訓(xùn)(心臟驟停的臨床表現(xiàn)與診斷)
- 我的大學(xué)生活介紹
- XX單位2024年終專(zhuān)題組織生活會(huì)理論學(xué)習(xí)理論學(xué)習(xí)強(qiáng)黨性凝心聚力建新功
- 2024年XX單位個(gè)人述職述廉報(bào)告
- 一文解讀2025中央經(jīng)濟(jì)工作會(huì)議精神(使社會(huì)信心有效提振經(jīng)濟(jì)明顯回升)
- 2025職業(yè)生涯規(guī)劃報(bào)告自我評(píng)估職業(yè)探索目標(biāo)設(shè)定發(fā)展策略
- 2024年度XX縣縣委書(shū)記個(gè)人述職報(bào)告及2025年工作計(jì)劃
- 寒假計(jì)劃中學(xué)生寒假計(jì)劃安排表(規(guī)劃好寒假的每個(gè)階段)
- 中央經(jīng)濟(jì)工作會(huì)議九大看點(diǎn)學(xué)思想強(qiáng)黨性重實(shí)踐建新功