使用jdbcjavabean操作數(shù)據(jù)庫_第1頁
使用jdbcjavabean操作數(shù)據(jù)庫_第2頁
使用jdbcjavabean操作數(shù)據(jù)庫_第3頁
使用jdbcjavabean操作數(shù)據(jù)庫_第4頁
使用jdbcjavabean操作數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第二章使用JDBC和JavaBean操作數(shù)據(jù)庫第二單元第1頁/共38頁本章相關(guān)學(xué)習(xí)資源《使用JDBC操作數(shù)據(jù)庫》專題《使用JavaBean封裝數(shù)據(jù)》專題《使用JSP/Servlet技術(shù)開發(fā)新聞發(fā)布系統(tǒng)》第2章《使用JDBC和JavaBean操作數(shù)據(jù)庫》第2頁/共38頁學(xué)習(xí)平臺(tái)“Java

Web開發(fā)技術(shù)”課程學(xué)生用書預(yù)習(xí)檢查使用JDBC技術(shù)如何實(shí)現(xiàn)數(shù)據(jù)庫的訪問?為什么連接池技術(shù)可以提高數(shù)據(jù)庫訪問效率?在JSP中如何實(shí)現(xiàn)頁面的復(fù)用?第3頁/共38頁提問本章任務(wù)任務(wù)1:使用JDBC讀取個(gè)人通訊錄任務(wù)2:使用配置文件保存數(shù)據(jù)庫信息任務(wù)3:實(shí)現(xiàn)對(duì)個(gè)人通訊錄的編輯任務(wù)4:使用數(shù)據(jù)源和連接池優(yōu)化數(shù)據(jù)庫訪問任務(wù)5:使用JSP標(biāo)簽顯示個(gè)人通訊錄第4頁/共38頁理解JDBC的工作原理能夠使用數(shù)據(jù)源和連接池優(yōu)化數(shù)據(jù)庫訪問能夠使用JSP標(biāo)簽優(yōu)化頁面代碼能夠使用JDBC操作數(shù)據(jù)庫能夠使用配置文件保存數(shù)據(jù)庫信息本章目標(biāo)點(diǎn)重點(diǎn)難點(diǎn)重點(diǎn)難點(diǎn)重第5頁/共38頁串講:JDBC概述第6頁/共38頁提問在之前的程序中,數(shù)據(jù)都是預(yù)先寫好的,如何實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)變化?JDBCJava數(shù)據(jù)庫連接技術(shù)(JavaDataBaseConnectivity)應(yīng)用程序數(shù)據(jù)庫服務(wù)器通過JDBC實(shí)現(xiàn)數(shù)據(jù)交互串講:JDBC的工作原理SqlServerJDBCAPIJDBCDriverManagerJDBC驅(qū)動(dòng)Java應(yīng)用程序OracleJDBC驅(qū)動(dòng)JDBC的內(nèi)容JDBCAPI定義了一系列的接口和類,集成在java.sql和javax.sql包中DriverManager管理各種不同的JDBC驅(qū)動(dòng)JDBC驅(qū)動(dòng)負(fù)責(zé)連接不同類型的數(shù)據(jù)庫第7頁/共38頁講解:JDBC訪問數(shù)據(jù)庫的步驟JDBC訪問數(shù)據(jù)庫步驟124獲取Connection連接DriverManager加載驅(qū)動(dòng)創(chuàng)建Statement執(zhí)行SQL語句返回ResultSet查詢結(jié)果應(yīng)用程序數(shù)據(jù)庫服務(wù)器3第8頁/共38頁串講:JDBC訪問數(shù)據(jù)庫的步驟加載驅(qū)動(dòng)獲取數(shù)據(jù)庫連接Class.forName("JDBC驅(qū)動(dòng)類名稱");第9頁/共38頁Connectionconn=DriverManager.getConnection(數(shù)據(jù)庫URL,數(shù)據(jù)庫用戶名,密碼)在加載驅(qū)動(dòng)及獲取連接過程中,可能會(huì)出現(xiàn)異常,因此需要注意進(jìn)行異常處理串講:JDBC訪問數(shù)據(jù)庫的步驟Statement對(duì)象通過Connection對(duì)象創(chuàng)建用于執(zhí)行SQL語句方法說明ResultSetexecuteQuery(Stringsql)執(zhí)行SQL查詢并獲取到ResultSet對(duì)象intexecuteUpdate(Stringsql)可以執(zhí)行插入、刪除、更新等操作,返回值是執(zhí)行該操作所影響的行數(shù)voidclose()關(guān)閉Statement對(duì)象Statementstmt=conn.createStatement();第10頁/共38頁語法串講:JDBC訪問數(shù)據(jù)庫的步驟ResultSet結(jié)果集用于存儲(chǔ)查詢結(jié)果只在執(zhí)行select語句時(shí)返回方法說明booleannext()將光標(biāo)從當(dāng)前位置向下移動(dòng)一行voidclose()關(guān)閉ResultSet對(duì)象StringgetString(StringcolLabel)根據(jù)列名稱對(duì)應(yīng)的值StringgetString(intcolIndex))根據(jù)列的位置獲取對(duì)應(yīng)的值intgetInt(intcolIndex)根據(jù)列的位置獲取對(duì)應(yīng)值intgetInt(StringcolLabel)根據(jù)列的名稱獲取對(duì)應(yīng)的值第11頁/共38頁串講:JDBC訪問數(shù)據(jù)庫的步驟執(zhí)行SQL命令并處理結(jié)果…獲取數(shù)據(jù)庫連接代碼…Stringsql="select*fromnews_detail";//獲取Statement對(duì)象Statementstmt=connection.createStatement();//執(zhí)行SQL命令,返回查詢結(jié)果集ResultSetrs=stmt.executeQuery(sql);//從結(jié)果集中讀取數(shù)據(jù)while(rs.next()){intid=rs.getInt("id");Stringtitle=rs.getString("title");

…….}創(chuàng)建Statement對(duì)象執(zhí)行查詢,返回結(jié)果集ResultSet結(jié)果集只有在執(zhí)行查詢命令時(shí)才會(huì)被返回讀取數(shù)據(jù)第12頁/共38頁串講:JDBC訪問數(shù)據(jù)庫的步驟釋放資源try{if(rs!=null){ rs.close(); }if(stmt!=null){ stmt.close();}if(connection!=null){ connection.close();}}catch(SQLExceptione){e.printStackTrace();}釋放資源前要判斷資源是否為NULL,以免錯(cuò)誤關(guān)閉引發(fā)異常演示示例:使用JDBC查詢新聞信息第13頁/共38頁上機(jī)練習(xí)需求說明使用JDBC實(shí)現(xiàn)個(gè)人通訊錄的訪問,在控制臺(tái)輸出聯(lián)系人信息數(shù)據(jù)表要求字段至少包括姓名、年齡、電話、聯(lián)系地址完成時(shí)間:30分鐘共性問題集中講解第14頁/共38頁練習(xí)講解:使用配置文件訪問數(shù)據(jù)庫配置文件以.properties為文件后綴以鍵值(key/value)的方式組織內(nèi)容一次編寫,隨時(shí)調(diào)用driver=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:@localhost:1521:newsusername=scottpassword=tiger perties鍵(key)=值(value)配置信息的編寫第15頁/共38頁講解:使用配置文件訪問數(shù)據(jù)庫Properties類讀取配置文件Properties類位于java.util包中,可以讀取以鍵值保存的數(shù)據(jù)演示示例:使用配置文件保存數(shù)據(jù)庫信息方法說明StringgetProperty(Stringkey)根據(jù)鍵名在屬性列表中查找對(duì)應(yīng)的值voidload(InputStreaminStream)從輸入流中讀取屬性列表 StringconfigFile="perties"; properties=newProperties(); InputStreamin=ConfigManager.class.getClassLoader().getResourceAsStream(configFile); try{//讀取配置文件

properties.load(in); in.close();……}

//根據(jù)鍵(key)返回值(value) Stringdriver=properties.getProperty("driver")將配置信息以流方式讀取演示示例:使用配置文件保存數(shù)據(jù)庫信息使用load()加載輸入流根據(jù)屬性名稱獲取屬性值第16頁/共38頁上機(jī)練習(xí)需求說明在前次上機(jī)基礎(chǔ)上,使用配置文件實(shí)現(xiàn)個(gè)人通訊錄的訪問,并讀取信息在控制臺(tái)輸出顯示完成時(shí)間:10分鐘共性問題集中講解第17頁/共38頁練習(xí)小結(jié)JDBC訪問數(shù)據(jù)庫的步驟有哪些?使用配置文件優(yōu)化數(shù)據(jù)庫訪問的好處是什么?第18頁/共38頁提問串講:PreparedStatement概述PreparedStatement概述繼承自Statement接口能夠?qū)QL語句進(jìn)行預(yù)編譯PreparedStatement的優(yōu)勢提高SQL語句執(zhí)行效率提高安全性Statement接口PreparedStatement接口第19頁/共38頁講解:PreparedStatement的應(yīng)用PreparedStatement的應(yīng)用SQL語句使用“?”作為數(shù)據(jù)占位符在創(chuàng)建時(shí)對(duì)SQL語句進(jìn)行預(yù)編譯使用setXxx()方法設(shè)置數(shù)據(jù)Stringsql="insertintousers(name,age)values(?,?)";PreparedStatementps=conn.prepareStatement(sql); ps.setString(1,

"Jack");ps.setInt(2,20);ps.executeUpdate();演示示例:使用PreparedStatement操作數(shù)據(jù)庫占位符與字段數(shù)量保持一致對(duì)sql語句進(jìn)行預(yù)編譯根據(jù)字段類型進(jìn)行設(shè)置第20頁/共38頁上機(jī)練習(xí)需求說明使用PreparedStatement實(shí)現(xiàn)對(duì)個(gè)人通訊錄信息的編輯編寫公共類BaseDao及接口使用PreparedStatement實(shí)現(xiàn)數(shù)據(jù)編輯完成時(shí)間:30分鐘共性問題集中講解第21頁/共38頁練習(xí)串講:為什么使用連接池現(xiàn)在我們能夠使用JDBC訪問數(shù)據(jù)庫了,這種實(shí)現(xiàn)方式是否存在不足呢?分析訪問前需要先獲取連接每次操作結(jié)束后,要釋放資源頻繁的連接導(dǎo)致系統(tǒng)的安全性和穩(wěn)定性差使用連接池可以解決以上問題第22頁/共38頁問題生活中的連接池串講:連接池概述等待連接普通電話專線電話直接通話第23頁/共38頁串講:連接池的工作原理連接池的工作原理連接池是由容器提供的,用來管理池中連接對(duì)象Connection1Connection2Connection3請(qǐng)求連接返回連接連接池自動(dòng)分配連接對(duì)象并對(duì)閑置的連接進(jìn)行回收連接池應(yīng)用程序數(shù)據(jù)庫第24頁/共38頁串講:數(shù)據(jù)源連接池中的連接對(duì)象是由誰創(chuàng)建的呢?數(shù)據(jù)源(DataSource)javax.sql.DataSource接口負(fù)責(zé)建立與數(shù)據(jù)庫的連接由Tomcat提供,將連接保存在連接池中第25頁/共38頁問題在Tomcat中配置數(shù)據(jù)源導(dǎo)入數(shù)據(jù)庫文件ojdbc14.jar配置conf/context.xml文件<Resourcename="jdbc/news"auth="Container"type="javax.sql.DataSource"maxActive="100"maxIdle="30"maxWait="10000"username="scott"password="tiger"driverClassName="oracle.jdbc.OracleDriver"url="jdbc:oracle:thin:@localhost:1521:news"/>講解:數(shù)據(jù)源的配置數(shù)據(jù)源名稱指定管理者及數(shù)據(jù)源的類型連接數(shù)量及等待時(shí)間數(shù)據(jù)庫相關(guān)信息第26頁/共38頁JNDI讀取數(shù)據(jù)源JNDI是Java命名與目錄接口通過名稱與對(duì)象的綁定實(shí)現(xiàn)資源獲取講解:數(shù)據(jù)源的讀取演示示例:數(shù)據(jù)源的配置與讀取//初始化上下文Contextcxt=newInitialContext();//獲取與邏輯名相關(guān)聯(lián)的數(shù)據(jù)源對(duì)象DataSourceds=(DataSource)cxt.lookup("p/env/jdbc/news");conn=ds.getConnection();通過Context接口的lookup()查找數(shù)據(jù)源p/env為JavaEE默認(rèn)路徑j(luò)dbc/news為DataSource的名稱第27頁/共38頁上機(jī)練習(xí)需求說明配置數(shù)據(jù)源,實(shí)現(xiàn)通過數(shù)據(jù)源和連接池的方式訪問個(gè)人通訊錄完成時(shí)間:10分鐘共性問題集中講解第28頁/共38頁練習(xí)串講:JSP標(biāo)簽使用JSP標(biāo)簽優(yōu)化頁面顯示封裝頁面顯示功能頁面代碼簡介提高可讀性,易于維護(hù)第29頁/共38頁提問使用腳本與HTML嵌套,頁面代碼很亂,可讀性差,也不易于維護(hù),能否進(jìn)行改進(jìn)?講解:JSP標(biāo)簽創(chuàng)建JavaBean標(biāo)簽設(shè)置JavaBean屬性<jsp:useBeanid=JavaBean名稱class=引用類的地址scope=作用域><jsp:setPropertyname=JavaBean名稱property=屬性名稱value=值><jsp:useBeanid="newsService"class="com.pb.news.service.impl.NewsServiceImpl"scope="page"/><jsp:useBeanid="newsDao"class="com.pb.news.dao.impl.NewsDaoImpl"scope="page"/><jsp:setPropertyproperty="newsDao"name="newsService"value="<%=newsDao%>"/>

演示示例:<jsp:useBean>的使用調(diào)用JavaBean設(shè)置JavaBean屬性第30頁/共38頁語法語法上機(jī)練習(xí)需求說明修改個(gè)人通訊錄查詢顯示方式,并通過JSP標(biāo)簽顯示個(gè)人通訊錄的信息完成時(shí)間:10分鐘共性問題集中講解第31頁/共38頁練習(xí)講解:使用標(biāo)簽獲取屬性獲取JavaBean屬性name:表示useBean中使用的JavaBean的idproperty:JavaBean的屬性名稱第32頁/共38頁<jsp:getPropertyname="BeanName"property="PropertyName"/><jsp:useBeanid="news"class="com.pb.news.entity.News"scope="page"/><jsp:setPropertyname="news"property="title"value="中國首艘…."/><jsp:getPropertyname="news"property="title"/>

演示示例:使用<jsp:getProperty>獲取屬性串講:頁面的復(fù)用當(dāng)多個(gè)JSP頁面中有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論