實(shí)驗(yàn)8-jdbc數(shù)據(jù)庫(kù)訪問_第1頁(yè)
實(shí)驗(yàn)8-jdbc數(shù)據(jù)庫(kù)訪問_第2頁(yè)
實(shí)驗(yàn)8-jdbc數(shù)據(jù)庫(kù)訪問_第3頁(yè)
實(shí)驗(yàn)8-jdbc數(shù)據(jù)庫(kù)訪問_第4頁(yè)
實(shí)驗(yàn)8-jdbc數(shù)據(jù)庫(kù)訪問_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)8JDBC訪問數(shù)據(jù)庫(kù)一、實(shí)驗(yàn)?zāi)康?.掌握使用傳統(tǒng)的方法訪問數(shù)據(jù)庫(kù);2.掌握使用數(shù)據(jù)源的方法訪問數(shù)據(jù)庫(kù)。二、實(shí)驗(yàn)原理數(shù)據(jù)庫(kù)應(yīng)用是Web應(yīng)用開發(fā)的一個(gè)重要應(yīng)用。Web應(yīng)用程序訪問數(shù)據(jù)庫(kù)有兩種方法:傳統(tǒng)的方法和使用JNDI數(shù)據(jù)源的方法。傳統(tǒng)方法訪問數(shù)據(jù)庫(kù)的步驟是:①加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序;②建立連接對(duì)象;③創(chuàng)建語(yǔ)句對(duì)象;④獲得結(jié)果集;⑤關(guān)閉有關(guān)連接對(duì)象。使用數(shù)據(jù)源訪問數(shù)據(jù)庫(kù)的步驟是:①配置數(shù)據(jù)源(局部數(shù)據(jù)源或全局?jǐn)?shù)據(jù)源);②通過JNDI機(jī)制查找命名數(shù)據(jù)源;③通過數(shù)據(jù)源對(duì)象創(chuàng)建連接對(duì)象;④其他與傳統(tǒng)方法一致。三、實(shí)驗(yàn)內(nèi)容與步驟(一)使用傳統(tǒng)方法通過JSP頁(yè)面訪問數(shù)據(jù)庫(kù)【步驟1】創(chuàng)建數(shù)據(jù)庫(kù)。假設(shè)在PostgreSQL建立了一個(gè)名為bookstore的數(shù)據(jù)庫(kù),在其中建立books表,代碼如下:CREATETABLEbooks(bookidcharacter(5)PRIMARYKEY,--書號(hào)titlevarchar2(80),--書名authorcharactervarying(20),--作者publishercharactervarying(40),--出版社pricereal--價(jià)格);向books表中插入幾條記錄,代碼如下:INSERTINTObooksVALUES('204','HeadFirstServlets&JSP','BryanBasham','中國(guó)電力出版社',98.00);INSERTINTObooksVALUES('201','Servlets與JSP核心教程','HallMarty','清華大學(xué)出版社',45);INSERTINTObooksVALUES('202','Tomcat與JavaWeb開發(fā)技術(shù)祥解','孫衛(wèi)琴','機(jī)械工業(yè)出版社',45);INSERTINTObooksVALUES('203','JSP應(yīng)用開發(fā)技術(shù)','柳永坡','人民郵電出版社',52);INSERTINTObooksVALUES('205','J2EE1.4編程指南','SpielmanSue','電子工業(yè)出版社',68);注意:需要將數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng)程序安裝到應(yīng)用程序的WEB-INF\lib目錄中?!静襟E2】使用下面JSP頁(yè)面displayBooks.jsp訪問books表中的數(shù)據(jù)。<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.sql.*"%><html><head><title>DatabaseAccessTest</title></head><body><%try{Class.forName("org.postgresql.Driver");Stringdburl="jdbc:postgresql://localhost:5432/bookstore";Connectionconn=DriverManager.getConnection(dburl,"bookstore","bookstore");Statementstmt=conn.createStatement();Stringsql="SELECT*FROMbooks";ResultSetrs=stmt.executeQuery(sql);out.println("<tableborder=1>");out.println("<tr><td>書號(hào)</td><td>書名</td><td>作者</td><td>價(jià)格</td></tr>");while(rs.next()){out.println("<tr><td>"+rs.getString(1)+"</td><td>"+rs.getString(2)+"</td><td>"+rs.getString(3)+"</td><td>"+rs.getString(5)+"</td></tr>");}out.println("</table>");rs.close();stmt.close();conn.close();}catch(Exceptione){out.println(e.getMessage());}%></body></html>運(yùn)用mysql的代碼如下:<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.sql.*"%><html><head><title>DatabaseAccessTest</title></head><body> <% try{ Class.forName("com.mysql.jdbc.Driver"); Stringdburl="jdbc:mysql://localhost:3306/bookstore"; Connectionconn=DriverManager .getConnection(dburl,"root",""); Statementstmt=conn.createStatement(); Stringsql="SELECT*FROMbooks"; ResultSetrs=stmt.executeQuery(sql); out.println("<tableborder=1>"); out.println("<tr><td>書號(hào)</td><td>書名</td><td>作者</td><td>價(jià)格</td></tr>"); while(rs.next()){ out.println("<tr><td>"+rs.getString(1)+"</td><td>" +rs.getString(2)+"</td><td>"+rs.getString(3)}//根據(jù)書號(hào)查詢圖書信息publicBookBeansearchBook(Stringbookid){ Connectionconn=null;PreparedStatementpstmt=null;ResultSetrst=null;BookBeanbook=newBookBean();try{conn=dataSource.getConnection(); pstmt=conn.prepareStatement("SELECT*FROMbooksWHEREbookid=?"); pstmt.setString(1,bookid); rst=pstmt.executeQuery(); if(rst.next()){ book.setBookid(rst.getString("bookid")); book.setTitle(rst.getString("title"));book.setAuthor(rst.getString("author"));book.setPublisher(rst.getString("publisher"));book.setPrice(rst.getFloat("price")); returnbook;}else{returnnull;} }catch(SQLExceptionse){ returnnull; }finally{ try{ conn.close(); }catch(SQLExceptionse){ } }}//插入一本圖書記錄publicbooleaninsertBook(BookBeanbook){ Connectionconn=null; PreparedStatementpstmt=null; try{ conn=dataSource.getConnection(); pstmt=conn.prepareStatement( "INSERTINTObooksVALUES(?,?,?,?,?)"); pstmt.setString(1,book.getBookid()); pstmt.setString(2,book.getTitle()); pstmt.setString(3,book.getAuthor()); pstmt.setString(4,book.getPublisher()); pstmt.setFloat(3,book.getPrice()); pstmt.executeUpdate(); pstmt.close(); returntrue; }catch(SQLExceptionse){ returnfalse; }finally{ try{ conn.close(); }catch(SQLExceptionse){} }}}【步驟3】下面的JSP頁(yè)面bookQuery.jsp實(shí)現(xiàn)根據(jù)書號(hào)查詢圖書信息<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>BookQuery</title></head><body>請(qǐng)輸入一個(gè)書號(hào):<br><formaction="bookquery.do"method="post"><inputtype="text"name="bookid"><br><inputtype="submit"value="提交"></form></body></html>圖3bookQuery.jsp【步驟4】下面的JSP頁(yè)面bookInsert.jsp實(shí)現(xiàn)向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>BookInsert</title></head><body><h3>請(qǐng)輸入圖書信息:</h3><%if(request.getAttribute("result")!=null)out.print(request.getAttribute("result"));%><formaction="bookinsert.do"method="post"><table><tr><td>書號(hào)</td><td><inputtype="text"name="bookid"></td></tr><tr><td>書名</td><td><inputtype="text"name="title"></td></tr><tr><td>作者</td><td><inputtype="text"name="author"></td></tr><tr><td>出版社</td><td><inputtype="text"name="publisher"></td></tr><tr><td>單價(jià)</td><td><inputtype="text"name="price"></td></tr><tr><td><inputtype="submit"value="確定"></td><td><inputtype="reset"value="重置"></td></tr></table></form></body></html>圖4bookInsert.jsp圖5插入成功【步驟5】顯示查詢結(jié)果的JSP頁(yè)面display.jsp:<%@pagecontentType="text/html;charset=gb2312"%><jsp:useBeanid="book"class="com.beans.BookBean"scope="request"/><html><body>書號(hào):<jsp:getPropertyname="book"property="bookid"/>書名:<jsp:getPropertyname="book"property="title"/>作者:<jsp:getPropertyname="book"property="author"/>出版社:<jsp:getPropertyname="book"property="publisher"/>價(jià)格:<jsp:getPropertyname="book"property="price"/></body></html>圖6顯示查詢結(jié)果【步驟6】錯(cuò)誤頁(yè)面errorPage.jsp代碼如下:<%@pagecontentType="text/html;charset=gb2312"%><html><body>對(duì)不起,您查的圖書不存在!</body></html>圖7顯示錯(cuò)誤頁(yè)面【步驟7】下面的Servlet實(shí)現(xiàn)從請(qǐng)求參數(shù)獲得書號(hào),然后從數(shù)據(jù)庫(kù)中查找該書,最后根據(jù)查詢結(jié)果將請(qǐng)求轉(zhuǎn)發(fā)到顯示頁(yè)面(display.jsp)或錯(cuò)誤頁(yè)面(errorPage.jsp)。packagecom.control;importjava.io.*;importjava.sql.*;importjavax.servlet.*;importjavax.servlet.http.*;importcom.beans.BookBean;importcom.beans.BookDAO;publicclassBookQueryServletextendsHttpServlet{publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringbookid=request.getParameter("bookid");BookDAObookdao=newBookDAO();BookBeanbook=bookdao.searchBook(bookid);if(book!=null){request.getSession().setAttribute("book",book);RequestDispatcherview=request.getRequestDispatcher("/display.jsp");view.forward(request,response);}else{RequestDispatcherview=request.getRequestDispatcher("/errorPage.jsp");view.forward(request,response);}} }【步驟8】下面的Servlet實(shí)現(xiàn)向數(shù)據(jù)庫(kù)插入數(shù)據(jù),并將控制請(qǐng)求的轉(zhuǎn)發(fā)到bookInsert.jsp頁(yè)面。packagecom.control;importjava.io.*;importjava.sql.*;importjavax.servlet.*;importjavax.servlet.http.*;importcom.beans.BookBean;importcom.beans.BookDAO;publicclassBookInsertServletextendsHttpServlet{publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ request.setCharacterEncoding("gb2312");Stringmessage=null;BookBeanbook=newBookBean(request.getParameter("bookid"),request.getParameter("title"),request.getParameter("author"),request.getParameter("publisher"),Float.parseFloat(request.getParameter("price")) );BookDAObookdao=newBookDAO();booleansuccess=bookdao.insertBook(book);if(success){message="成功插入一條記錄!";}else{message="插入記錄錯(cuò)誤!";}request.setAttribute("result",message);RequestDispatcherview=request.getRequestDispatcher("/bookInsert.jsp");view.forward(request,response);}}【步驟9】在DD文件中部署Servl

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論