《JDBC數(shù)據(jù)庫連接》PPT課件.ppt
《《JDBC數(shù)據(jù)庫連接》PPT課件.ppt》由會員分享,可在線閱讀,更多相關《《JDBC數(shù)據(jù)庫連接》PPT課件.ppt(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第3章JDBC:Java數(shù)據(jù)庫連接,主要內(nèi)容:JDBC概述JDBC主要接口通過案例介紹數(shù)據(jù)庫應用開發(fā)的過程數(shù)據(jù)庫連接池的配置和使用,14,3.1JDBC概述,什么是JDBCJDBC(JavaDatabaseConnectivity)是實現(xiàn)Java程序與數(shù)據(jù)庫系統(tǒng)互連的標準API,它允許發(fā)送SQL語句給數(shù)據(jù)庫,并處理執(zhí)行結果。Java程序與數(shù)據(jù)庫的連接方式主要有如下4種:,3.1JDBC概述,JDBC驅動程序類型1:JDBC-ODBC橋,通過ODBC數(shù)據(jù)源實現(xiàn)與數(shù)據(jù)庫的連接。如圖3.1(P23)所示,這種方法使用簡單方便,但性能較低。類型2:通過本地網(wǎng)絡庫與數(shù)據(jù)庫進行連接的純Java驅動程序。如圖3.2(P23)所示,這種方法不需中間ODBC層,因而性能優(yōu)于前者。類型3:通過中間件服務器與數(shù)據(jù)庫建立連接的驅動程序。如圖3.3(P24)所示,這種方法客戶機不需安裝網(wǎng)絡庫,借助中間件服務器(如WebLogicServer)建立與數(shù)據(jù)庫的連接。類型4:直接與數(shù)據(jù)庫相連的純Java驅動程序。如圖3.4(P24)所示,這種方法使用數(shù)據(jù)庫廠商提供的專用Java驅動程序,一對一,效率高。,3.2常用JDBC接口,JDBC相關接口/類存放于2個包中:java.sql和javax.sql常用的JDBC接口/類主要有:java.sql.Driver:是驅動程序必須實現(xiàn)的接口,它提供連接數(shù)據(jù)庫的基本方法。java.sql.DriverManager:管理JDBC驅動程序,提供獲取連接對象的方法,建立與數(shù)據(jù)庫的連接。java.sql.Connection:用于Java應用程序與數(shù)據(jù)庫建立通信的對象,通過它進而創(chuàng)建Statement對象,執(zhí)行SQL語句。java.sql.Statement:是對SQL語句進行封裝的特定對象,通過它執(zhí)行了SQL語句進行數(shù)據(jù)庫操作。java.sql.ResultSet:用于封裝SQL語句查詢的結果,是一個包含數(shù)據(jù)庫記錄的特殊對象。,3.3數(shù)據(jù)庫應用開發(fā)的基本過程,Java代碼與數(shù)據(jù)庫服務器之間的通信連接通過有2種方式:直接連接和池連接。直接連接是在Java代碼中打開和維護數(shù)據(jù)庫連接,適合于類型1、2、4的JDBC驅動程序。本節(jié)首先介紹直接連接的完整數(shù)據(jù)庫開發(fā)步驟:建立數(shù)據(jù)源根據(jù)需要安裝數(shù)據(jù)庫系統(tǒng)并創(chuàng)建數(shù)據(jù)庫;裝載驅動程序裝載JDBC/ODBC橋:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");裝載JDBC類,如JDBC驅動程序類為jdbc.DriverName,則:Class.forName("jdbc.DriverName");,3.3數(shù)據(jù)庫應用開發(fā)過程,建立連接建立驅動程序與數(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驅動程序,則需查閱其相關文檔得知其驅動程序的名字,并使用特定格式的url字串。以下是常用數(shù)據(jù)庫系統(tǒng)的驅動程序名及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ù)庫應用開發(fā)過程,建立語句對象用于向數(shù)據(jù)庫系統(tǒng)發(fā)送SQL語句Statementstmt=conn.createStatement();執(zhí)行SQL語句有查詢和更新2種類型查詢使用select語句,使用語句對象的executeQuery()方法執(zhí)行,返回結果集對象ResultSet更新包括insert、update、delete三種語句,使用語句對象的executeUpdate()方法執(zhí)行,不返回結果集,返回影響記錄的個數(shù)。以下是一個更新記錄的語句示例:Stringsqls="updatestudentsetage=age+1";stmt.executeUpdate(sqls);,3.3數(shù)據(jù)庫應用開發(fā)過程,查詢結果處理ResultSet對象提供了很多方法用于處理查詢返回的結果,以下是幾個常用方法:next():將記錄指針(游標)指向當前記錄的下一個記錄,返回值為boolean型,若返回false則表示此后已無記錄;beforeFirst():將游標指向結果集的第一個記錄的前面;last():將游標指向結果集的最后一個記錄;getString(arg)、getInt(arg)、getDouble(arg)、......,獲取當前記錄指定列的值,參數(shù)為整數(shù)時指定列號,為字符串時指定列名。注意:通過帶參數(shù)創(chuàng)建語句對象可以指定游標移動的方式以及并發(fā)控制方式,3.3數(shù)據(jù)庫應用開發(fā)過程,獲取元數(shù)據(jù)元數(shù)據(jù)指的是描述數(shù)據(jù)的數(shù)據(jù),這里主要是記錄集的結構信息。以下是一個簡單示例:ResultSetMetaDatarsmd=rs.getMetaData();//建立元數(shù)據(jù)對象intcolcount=rsmd.getColumnCount();//獲取結果集的列數(shù)for(inti=1;i<=colcount;i++)//循環(huán)獲取并輸出各列的名稱及類型{out.print(rsmd.getColumnName(i));out.println("\t"+rsmd.getColumnTypeName(i));},3.3數(shù)據(jù)庫應用開發(fā)過程,關閉對象關閉對象使用close()方法,并且按照ResultSet→Statement→Connection的順序依次關閉所使用的對象。關閉前最好先檢查對象是否為null,不然將產(chǎ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ù)庫應用開發(fā)過程,處理異常和警告數(shù)據(jù)庫應用相關的異常類主要有2個:裝載驅動時發(fā)生異常的處理類是ClassNotFoundException,數(shù)據(jù)庫操作時發(fā)生異常的處理類是SQLExeption。例如:try{Class.forName(driver);......}catch(ClassNotFoundExceptione1){System.out.println("數(shù)據(jù)庫驅動不存在!");//System.out.println(e1.toString());}catch(SQLExceptione2){System.out.println("數(shù)據(jù)庫異常!");//System.out.println(e2.toString());},3.4實例,建立一個學生表student,包括三個屬性:學號、姓名和年齡,其創(chuàng)建語句如下:createtablestudent(idvarchar(10)primarykey,namevarchar(20),ageint);實現(xiàn)的功能:向表student中插入一條記錄id=000099988,name=zhhdhh,age=45輸出顯示所有的記錄。實現(xiàn)方式:純Java驅動JDBC-ODBC橋準備實例采用MySQL數(shù)據(jù)庫,編程之前建立一個數(shù)據(jù)庫test,并在其中創(chuàng)建表student,3.4實例,純Java驅動方式源碼參見JDBCDemo.java(P28-29)JDBC-ODBC橋方式只須將上例代碼中的驅動程序參數(shù)driver和連接參數(shù)url修改即可:Stringdriver="sun.jdbc.odbc.JdbcOdbcDriver";Stringurl="jdbc:odbc:test";,3.5數(shù)據(jù)庫連接池,前面介紹的數(shù)據(jù)庫應用程序,基本遵循這樣一個設計模式:建立連接→操作數(shù)據(jù)庫→斷開連接。這種模式在訪問量巨大(很多客戶端)時就會出現(xiàn)連接、執(zhí)行、釋放、再連接、再執(zhí)行、再釋放…,一直循環(huán)這個過程,勢必導致數(shù)據(jù)庫服務器的巨大開銷。一旦某個連接沒有正常關閉,還會導致數(shù)據(jù)庫系統(tǒng)的安全問題。如果讓所有的用戶共享一個連接,使整個訪問過程只需要創(chuàng)建一次連接,最后釋放一次連接,這勢必可以節(jié)省很多系統(tǒng)的時間,加快對用戶的響應速度。這正是連接池技術的初衷。,連接池的基本工作原理在服務器內(nèi)存(連接池)中創(chuàng)建一些備用連接;應用程序需要訪問數(shù)據(jù)庫時,從連接池中獲取連接,用完之后再放回。并由服務器統(tǒng)一管理連接的創(chuàng)建和釋放。當訪問量非常大時,為了提高效率可創(chuàng)建較多的連接;當訪問量比較少時,為了節(jié)約資源則可減少連接的數(shù)量,實現(xiàn)動態(tài)調(diào)節(jié)。連接的創(chuàng)建仍然需要相關信息:數(shù)據(jù)庫驅動程序、URL、用戶名和口令。下面以WebLogic9.2為例介紹連接池的配置和使用,配置數(shù)據(jù)源選擇WebLogic服務管理器左窗格[Services]→[JDBC]→[DataSources],打開數(shù)據(jù)源管理界面(如圖3.5P30);點擊進入數(shù)據(jù)源基本參數(shù)設置頁面(如圖3.6P31);點擊進入數(shù)據(jù)源事務選項設置頁面(如圖3.7P31);點擊進入數(shù)據(jù)庫連接參數(shù)設置頁面(如圖3.8P32);點擊進入驗證數(shù)據(jù)庫連接頁面(如圖3.9-3.11P32-33);測試成功后,即可將配置加入到目標服務器中(如圖3.12P33);一切完成后,在管理器左窗格的JINI樹中就可看到剛建好的數(shù)據(jù)源名字。,連接池應用實例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();,本章小結JDBC概述JDBC主要接口通過案例介紹數(shù)據(jù)庫應用開發(fā)的過程數(shù)據(jù)庫連接池的配置和使用下一章JTA:事務處理,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- JDBC數(shù)據(jù)庫連接 JDBC 數(shù)據(jù)庫連接 PPT 課件
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
相關資源
更多
正為您匹配相似的精品文檔
鏈接地址:http://m.appdesigncorp.com/p-12668854.html