《JDBC數(shù)據(jù)庫連接》PPT課件.ppt
《《JDBC數(shù)據(jù)庫連接》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《JDBC數(shù)據(jù)庫連接》PPT課件.ppt(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第3章JDBC:Java數(shù)據(jù)庫連接,主要內(nèi)容:JDBC概述JDBC主要接口通過案例介紹數(shù)據(jù)庫應(yīng)用開發(fā)的過程數(shù)據(jù)庫連接池的配置和使用,14,3.1JDBC概述,什么是JDBCJDBC(JavaDatabaseConnectivity)是實(shí)現(xiàn)Java程序與數(shù)據(jù)庫系統(tǒng)互連的標(biāo)準(zhǔn)API,它允許發(fā)送SQL語句給數(shù)據(jù)庫,并處理執(zhí)行結(jié)果。Java程序與數(shù)據(jù)庫的連接方式主要有如下4種:,3.1JDBC概述,JDBC驅(qū)動程序類型1:JDBC-ODBC橋,通過ODBC數(shù)據(jù)源實(shí)現(xiàn)與數(shù)據(jù)庫的連接。如圖3.1(P23)所示,這種方法使用簡單方便,但性能較低。類型2:通過本地網(wǎng)絡(luò)庫與數(shù)據(jù)庫進(jìn)行連接的純Java驅(qū)動程序。如圖3.2(P23)所示,這種方法不需中間ODBC層,因而性能優(yōu)于前者。類型3:通過中間件服務(wù)器與數(shù)據(jù)庫建立連接的驅(qū)動程序。如圖3.3(P24)所示,這種方法客戶機(jī)不需安裝網(wǎng)絡(luò)庫,借助中間件服務(wù)器(如WebLogicServer)建立與數(shù)據(jù)庫的連接。類型4:直接與數(shù)據(jù)庫相連的純Java驅(qū)動程序。如圖3.4(P24)所示,這種方法使用數(shù)據(jù)庫廠商提供的專用Java驅(qū)動程序,一對一,效率高。,3.2常用JDBC接口,JDBC相關(guān)接口/類存放于2個包中:java.sql和javax.sql常用的JDBC接口/類主要有:java.sql.Driver:是驅(qū)動程序必須實(shí)現(xiàn)的接口,它提供連接數(shù)據(jù)庫的基本方法。java.sql.DriverManager:管理JDBC驅(qū)動程序,提供獲取連接對象的方法,建立與數(shù)據(jù)庫的連接。java.sql.Connection:用于Java應(yīng)用程序與數(shù)據(jù)庫建立通信的對象,通過它進(jìn)而創(chuàng)建Statement對象,執(zhí)行SQL語句。java.sql.Statement:是對SQL語句進(jìn)行封裝的特定對象,通過它執(zhí)行了SQL語句進(jìn)行數(shù)據(jù)庫操作。java.sql.ResultSet:用于封裝SQL語句查詢的結(jié)果,是一個包含數(shù)據(jù)庫記錄的特殊對象。,3.3數(shù)據(jù)庫應(yīng)用開發(fā)的基本過程,Java代碼與數(shù)據(jù)庫服務(wù)器之間的通信連接通過有2種方式:直接連接和池連接。直接連接是在Java代碼中打開和維護(hù)數(shù)據(jù)庫連接,適合于類型1、2、4的JDBC驅(qū)動程序。本節(jié)首先介紹直接連接的完整數(shù)據(jù)庫開發(fā)步驟:建立數(shù)據(jù)源根據(jù)需要安裝數(shù)據(jù)庫系統(tǒng)并創(chuàng)建數(shù)據(jù)庫;裝載驅(qū)動程序裝載JDBC/ODBC橋:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");裝載JDBC類,如JDBC驅(qū)動程序類為jdbc.DriverName,則:Class.forName("jdbc.DriverName");,3.3數(shù)據(jù)庫應(yīng)用開發(fā)過程,建立連接建立驅(qū)動程序與數(shù)據(jù)庫的連接,語法如下:Connectioncon=DriverManager.getConnection(url,Login,password);對于JDBC-ODBC橋連接,url可寫成jdbc:odbc:datasourceName;Login是登錄數(shù)據(jù)庫的用戶名;password是登錄密碼;如:Connectionmydbcon=DriverManager.getConnection("jdbc:odbc:mydb","sa","admin");對于使用數(shù)據(jù)庫系統(tǒng)自帶的JDBC驅(qū)動程序,則需查閱其相關(guān)文檔得知其驅(qū)動程序的名字,并使用特定格式的url字串。以下是常用數(shù)據(jù)庫系統(tǒng)的驅(qū)動程序名及url格式:Oracle:Driver——oracle.jdbc.driver.OracleDriverUrl——jdbc:oracle:thin:@hostname:1521:dbname,Sybase:Driver——com.sybase.jdbc2.jdbc.SybDriverUrl——jdbc:sybase:Tds:hostname:2638?ServiceName=dbnameSQLServer:Driver——com.microsoft.jdbc.sqldriver.SQLServerDriverUrl——jdbc:microsoft:sqlserver://hostname:1433;DatabaseName=dbnameMySQL:Driver——org.git.mm.mysql.Driver|com.mysql.jdbc.DriverUrl——jdbc:mysql://hostname:3306/dbnameDB2:Driver——com.ibm.db2.jdbc.app.DB2DriverUrl——jdbc:db2://hostname:50002/dbname,,3.3數(shù)據(jù)庫應(yīng)用開發(fā)過程,建立語句對象用于向數(shù)據(jù)庫系統(tǒng)發(fā)送SQL語句Statementstmt=conn.createStatement();執(zhí)行SQL語句有查詢和更新2種類型查詢使用select語句,使用語句對象的executeQuery()方法執(zhí)行,返回結(jié)果集對象ResultSet更新包括insert、update、delete三種語句,使用語句對象的executeUpdate()方法執(zhí)行,不返回結(jié)果集,返回影響記錄的個數(shù)。以下是一個更新記錄的語句示例:Stringsqls="updatestudentsetage=age+1";stmt.executeUpdate(sqls);,3.3數(shù)據(jù)庫應(yīng)用開發(fā)過程,查詢結(jié)果處理ResultSet對象提供了很多方法用于處理查詢返回的結(jié)果,以下是幾個常用方法:next():將記錄指針(游標(biāo))指向當(dāng)前記錄的下一個記錄,返回值為boolean型,若返回false則表示此后已無記錄;beforeFirst():將游標(biāo)指向結(jié)果集的第一個記錄的前面;last():將游標(biāo)指向結(jié)果集的最后一個記錄;getString(arg)、getInt(arg)、getDouble(arg)、......,獲取當(dāng)前記錄指定列的值,參數(shù)為整數(shù)時指定列號,為字符串時指定列名。注意:通過帶參數(shù)創(chuàng)建語句對象可以指定游標(biāo)移動的方式以及并發(fā)控制方式,3.3數(shù)據(jù)庫應(yīng)用開發(fā)過程,獲取元數(shù)據(jù)元數(shù)據(jù)指的是描述數(shù)據(jù)的數(shù)據(jù),這里主要是記錄集的結(jié)構(gòu)信息。以下是一個簡單示例:ResultSetMetaDatarsmd=rs.getMetaData();//建立元數(shù)據(jù)對象intcolcount=rsmd.getColumnCount();//獲取結(jié)果集的列數(shù)for(inti=1;i<=colcount;i++)//循環(huán)獲取并輸出各列的名稱及類型{out.print(rsmd.getColumnName(i));out.println("\t"+rsmd.getColumnTypeName(i));},3.3數(shù)據(jù)庫應(yīng)用開發(fā)過程,關(guān)閉對象關(guān)閉對象使用close()方法,并且按照ResultSet→Statement→Connection的順序依次關(guān)閉所使用的對象。關(guān)閉前最好先檢查對象是否為null,不然將產(chǎn)生異常。以下是相關(guān)代碼示例:try{Connectionconn=DriverManager.getConnection(url,user,pass);Statementstmt=con.createStatement();Stringsqls="select*fromstudent"ResultSetrs=stmt.executeQuery(sqls);/*數(shù)據(jù)處理過程略*/if(rs!=null)rs.close();if(stmt!=null)stmt.close();if(conn!=null)conn.close();}catch(SQLExceptione){System.out.println(e.toString());},3.3數(shù)據(jù)庫應(yīng)用開發(fā)過程,處理異常和警告數(shù)據(jù)庫應(yīng)用相關(guān)的異常類主要有2個:裝載驅(qū)動時發(fā)生異常的處理類是ClassNotFoundException,數(shù)據(jù)庫操作時發(fā)生異常的處理類是SQLExeption。例如:try{Class.forName(driver);......}catch(ClassNotFoundExceptione1){System.out.println("數(shù)據(jù)庫驅(qū)動不存在!");//System.out.println(e1.toString());}catch(SQLExceptione2){System.out.println("數(shù)據(jù)庫異常!");//System.out.println(e2.toString());},3.4實(shí)例,建立一個學(xué)生表student,包括三個屬性:學(xué)號、姓名和年齡,其創(chuàng)建語句如下:createtablestudent(idvarchar(10)primarykey,namevarchar(20),ageint);實(shí)現(xiàn)的功能:向表student中插入一條記錄id=000099988,name=zhhdhh,age=45輸出顯示所有的記錄。實(shí)現(xiàn)方式:純Java驅(qū)動JDBC-ODBC橋準(zhǔn)備實(shí)例采用MySQL數(shù)據(jù)庫,編程之前建立一個數(shù)據(jù)庫test,并在其中創(chuàng)建表student,3.4實(shí)例,純Java驅(qū)動方式源碼參見JDBCDemo.java(P28-29)JDBC-ODBC橋方式只須將上例代碼中的驅(qū)動程序參數(shù)driver和連接參數(shù)url修改即可:Stringdriver="sun.jdbc.odbc.JdbcOdbcDriver";Stringurl="jdbc:odbc:test";,3.5數(shù)據(jù)庫連接池,前面介紹的數(shù)據(jù)庫應(yīng)用程序,基本遵循這樣一個設(shè)計模式:建立連接→操作數(shù)據(jù)庫→斷開連接。這種模式在訪問量巨大(很多客戶端)時就會出現(xiàn)連接、執(zhí)行、釋放、再連接、再執(zhí)行、再釋放…,一直循環(huán)這個過程,勢必導(dǎo)致數(shù)據(jù)庫服務(wù)器的巨大開銷。一旦某個連接沒有正常關(guān)閉,還會導(dǎo)致數(shù)據(jù)庫系統(tǒng)的安全問題。如果讓所有的用戶共享一個連接,使整個訪問過程只需要創(chuàng)建一次連接,最后釋放一次連接,這勢必可以節(jié)省很多系統(tǒng)的時間,加快對用戶的響應(yīng)速度。這正是連接池技術(shù)的初衷。,連接池的基本工作原理在服務(wù)器內(nèi)存(連接池)中創(chuàng)建一些備用連接;應(yīng)用程序需要訪問數(shù)據(jù)庫時,從連接池中獲取連接,用完之后再放回。并由服務(wù)器統(tǒng)一管理連接的創(chuàng)建和釋放。當(dāng)訪問量非常大時,為了提高效率可創(chuàng)建較多的連接;當(dāng)訪問量比較少時,為了節(jié)約資源則可減少連接的數(shù)量,實(shí)現(xiàn)動態(tài)調(diào)節(jié)。連接的創(chuàng)建仍然需要相關(guān)信息:數(shù)據(jù)庫驅(qū)動程序、URL、用戶名和口令。下面以WebLogic9.2為例介紹連接池的配置和使用,配置數(shù)據(jù)源選擇WebLogic服務(wù)管理器左窗格[Services]→[JDBC]→[DataSources],打開數(shù)據(jù)源管理界面(如圖3.5P30);點(diǎn)擊進(jìn)入數(shù)據(jù)源基本參數(shù)設(shè)置頁面(如圖3.6P31);點(diǎn)擊進(jìn)入數(shù)據(jù)源事務(wù)選項(xiàng)設(shè)置頁面(如圖3.7P31);點(diǎn)擊進(jìn)入數(shù)據(jù)庫連接參數(shù)設(shè)置頁面(如圖3.8P32);點(diǎn)擊進(jìn)入驗(yàn)證數(shù)據(jù)庫連接頁面(如圖3.9-3.11P32-33);測試成功后,即可將配置加入到目標(biāo)服務(wù)器中(如圖3.12P33);一切完成后,在管理器左窗格的JINI樹中就可看到剛建好的數(shù)據(jù)源名字。,連接池應(yīng)用實(shí)例PoolDemo.java通過Servlet訪問連接池PoolServlet.java通過JSP訪問連接池Pool.jsp批處理BatchPoolDemo.java,3.5數(shù)據(jù)庫連接池,批量數(shù)據(jù)更新一般方法:Statementstmt=myConn.createStatement();stmt.addBatch("insertintostudentvalues(001,Maly,17)");stmt.addBatch("insertintostudentvalues(002,Ohoi,20)");stmt.executeBatch();宏語句方法:PreparedStatementpstmt=myConn.prepareStatement("insertintostudentvalues(?,?,?)");pstmt.setString(1,”001”);pstmt.setString(2,”Myly”);pstmt.setInt(3,17);pstmt.addBatch();pstmt.setString(1,”002”);pstmt.setString(2,”O(jiān)hoi”);pstmt.setInt(3,20);pstmt.addBatch();//......pstmt.executeBatch();,本章小結(jié)JDBC概述JDBC主要接口通過案例介紹數(shù)據(jù)庫應(yīng)用開發(fā)的過程數(shù)據(jù)庫連接池的配置和使用下一章JTA:事務(wù)處理,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- JDBC數(shù)據(jù)庫連接 JDBC 數(shù)據(jù)庫連接 PPT 課件
鏈接地址:http://www.hcyjhs8.com/p-12668854.html