收藏 分销(赏)

实验8-jdbc数据库访问.doc

上传人:二*** 文档编号:4575568 上传时间:2024-09-30 格式:DOC 页数:11 大小:139.50KB
下载 相关 举报
实验8-jdbc数据库访问.doc_第1页
第1页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、实验8 JDBC访问数据库一、实验目的1. 掌握使用传统的方法访问数据库;2. 掌握使用数据源的方法访问数据库。二、实验原理数据库应用是Web应用开发的一个重要应用。Web应用程序访问数据库有两种方法:传统的方法和使用JNDI数据源的方法。传统方法访问数据库的步骤是:加载数据库驱动程序;建立连接对象;创建语句对象;获得结果集;关闭有关连接对象。使用数据源访问数据库的步骤是:配置数据源(局部数据源或全局数据源);通过JNDI机制查找命名数据源;通过数据源对象创建连接对象;其他与传统方法一致。三、实验内容与步骤(一)使用传统方法通过JSP页面访问数据库【步骤1】创建数据库。假设在PostgreSQ

2、L建立了一个名为bookstore的数据库,在其中建立books表,代码如下:CREATE TABLE books ( bookid character(5) PRIMARY KEY, -书号 title varchar2(80), -书名author character varying(20), -作者 publisher character varying (40), -出版社 price real -价格);向books表中插入几条记录,代码如下:INSERT INTO books VALUES (204,Head First Servlets & JSP, Bryan Basham,

3、中国电力出版社,98.00);INSERT INTO books VALUES (201, Servlets 与JSP 核心教程, Hall Marty,清华大学出版社,45);INSERT INTO books VALUES (202, Tomcat与Java Web 开发技术祥解, 孙卫琴, 机械工业出版社,45);INSERT INTO books VALUES (203, JSP 应用开发技术, 柳永坡,人民邮电出版社,52);INSERT INTO books VALUES (205, J2EE 1.4 编程指南, Spielman Sue,电子工业出版社,68);注意:需要将数据库

4、的JDBC驱动程序安装到应用程序的WEB-INFlib目录中。【步骤2】使用下面JSP页面displayBooks.jsp访问books表中的数据。 Database Access Test%try Class.forName(org.postgresql.Driver);String dburl = jdbc:postgresql:/localhost:5432/bookstore;Connection conn = DriverManager.getConnection(dburl, bookstore, bookstore); Statement stmt = conn.createSt

5、atement();String sql = SELECT * FROM books ;ResultSet rs = stmt.executeQuery(sql);out.println();out.println(书号书名作者价格);while (rs.next()out.println(+ rs.getString(1)+ rs.getString(2)+ rs.getString(3)+ rs.getString(5)+);out.println();rs.close();stmt.close();conn.close();catch (Exception e) out.println(

6、e.getMessage();%运用mysql的代码如下:Database Access Test%try Class.forName(com.mysql.jdbc.Driver);String dburl = jdbc:mysql:/localhost:3306/bookstore;Connection conn = DriverManager.getConnection(dburl, root, );Statement stmt = conn.createStatement();String sql = SELECT * FROM books;ResultSet rs = stmt.exe

7、cuteQuery(sql);out.println();out.println(书号书名作者价格);while (rs.next() out.println( + rs.getString(1) + + rs.getString(2) + + rs.getString(3)+ + rs.getString(5) + );out.println();rs.close();stmt.close();conn.close(); catch (Exception e) out.println(e.getMessage();% 图1 displayBooks.jsp(二)通过数据源访问数据库注意:需要

8、将数据库的JDBC驱动程序安装到Tomcat安装目录的lib目录中,并重新启动Tomcat服务器。【步骤1】建立局部数据源在Web应用程序中建立一个META-INF目录,在其中建立一个context.xml文件,内容如下:【步骤2】使用下面的JSP页面displayBooks.jsp访问数据库 DataSource Test%try Context context = new InitialContext();DataSource ds = (DataSource) context.lookup(java:comp/env/jdbc/bookDS);Connection conn = ds.g

9、etConnection();Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(SELECT * FROM books);out.println();out.println(书号书名作者价格);while (rs.next()out.println(+ rs.getString(1)+ rs.getString(2)+ rs.getString(3)+ rs.getString(5)+);out.println();rs.close();stmt.close();conn.close();catch

10、 (Exception e) out.println(e.getMessage();%图2 displayBooks.jsp(三)综合应用。本实验采用MVC设计模式,通过数据源和DAO对象访问数据库。其中JavaBeans实现模型,访问数据库,Servlet实现控制器,JSP页面实现视图。 模型包括2个JavaBean:BookBean用于存放图书信息,BookDAO用于访问数据库。 控制器包括2个Servlet:BookQueryServlet根据请求参数查询图书信息、BookInsertServlet用来向数据库中插入数据。 视图包括4个JSP页面:bookQuery.jsp显示查询页面、

11、bookInsert.jsp显示插入页面、display.jsp显示查询结果页面和errorPage.jsp显示错误页面。【步骤1】存放图书信息的JavaBeans代码BookBean.java,它也是一个传输对象。package com.beans;import java.io.*;public class BookBean implements Serializable private String bookid = null; private String title = null; private String author = null; private String publish

12、er = null; private float price = 0.0F; public BookBean() public BookBean(String bookId, String author, String title, String publisher, float price) this.bookid = bookId; this.title = title; this.author = author; this.publisher = publisher;this.price = price; public String getBookid() return this.boo

13、kid; public String getTitle() return title; public String getAuthor() return this.author; public float getPrice() return price; public String getPublisher () return publisher; public void setBookid(String bookid) this.bookid=bookid; public void setTitle(String title)this.title=title; public void set

14、Author(String author) this. author = author; public void setPrice(float price)this.price=price; public void setPublisher (String publisher) this.publisher = publisher;【步骤2】下面的BookDAO是一个简单的JavaBeans,它实现数据库的访问。package com.beans;import java.sql.*;import javax.sql.*;import javax.naming.*;import java.uti

15、l.ArrayList;import com.beans.BookBean;public class BookDAO private static InitialContext context= null; private DataSource dataSource = null; public BookDAO() try if(context = null) context = new InitialContext(); dataSource = (DataSource)context.lookup(java:comp/env/jdbc/bookDS); catch(NamingExcept

16、ion e2) / 根据书号查询图书信息 public BookBean searchBook(String bookid) Connection conn = null; PreparedStatement pstmt = null; ResultSet rst = null; BookBean book = new BookBean(); try conn = dataSource.getConnection(); pstmt = conn.prepareStatement(SELECT * FROM books WHERE bookid=?); pstmt.setString(1,boo

17、kid); 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); return book; else return null; catch(SQLException se) return

18、null; finally try conn.close(); catch(SQLException se) / 插入一本图书记录 public boolean insertBook(BookBean book) Connection conn = null; PreparedStatement pstmt = null; try conn = dataSource.getConnection(); pstmt = conn.prepareStatement( INSERT INTO books VALUES(?,?,?,?,?); pstmt.setString(1,book.getBook

19、id(); pstmt.setString(2,book.getTitle(); pstmt.setString(3,book.getAuthor(); pstmt.setString(4,book.getPublisher(); pstmt.setFloat(3,book.getPrice(); pstmt.executeUpdate(); pstmt.close(); return true; catch(SQLException se) return false; finally try conn.close(); catch(SQLException se) 【步骤3】下面的JSP页面

20、bookQuery.jsp实现根据书号查询图书信息 Book Query请输入一个书号:图3 bookQuery.jsp【步骤4】下面的JSP页面bookInsert.jsp实现向数据库中插入数据 Book Insert请输入图书信息: 书号 书名 作者 出版社 单价 图4 bookInsert.jsp 图5 插入成功【步骤5】显示查询结果的JSP页面display.jsp: 书号: 书名: 作者: 出版社: 价格:图6 显示查询结果【步骤6】错误页面errorPage.jsp代码如下: 对不起,您查的图书不存在!图7 显示错误页面【步骤7】下面的Servlet实现从请求参数获得书号,然后从数

21、据库中查找该书,最后根据查询结果将请求转发到显示页面(display.jsp)或错误页面(errorPage.jsp)。package com.control;import java.io.*;import java.sql.*;import javax.servlet.*;import javax.servlet.http.*;import com.beans.BookBean;import com.beans.BookDAO;public class BookQueryServlet extends HttpServlet public void doPost(HttpServletReq

22、uest request,HttpServletResponse response) throws ServletException,IOException String bookid = request.getParameter(bookid); BookDAO bookdao = new BookDAO(); BookBean book = bookdao.searchBook(bookid); if(book!=null) request.getSession().setAttribute(book, book); RequestDispatcher view = request.get

23、RequestDispatcher(/display.jsp); view.forward(request, response); else RequestDispatcher view = request.getRequestDispatcher(/errorPage.jsp); view.forward(request, response); 【步骤8】下面的Servlet实现向数据库插入数据,并将控制请求的转发到bookInsert.jsp页面。package com.control;import java.io.*;import java.sql.*;import javax.serv

24、let.*;import javax.servlet.http.*;import com.beans.BookBean;import com.beans.BookDAO;public class BookInsertServlet extends HttpServlet public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException request.setCharacterEncoding(gb2312); String message

25、 = null; BookBean book = new BookBean( request.getParameter(bookid),request.getParameter(title), request.getParameter(author),request.getParameter(publisher), Float.parseFloat(request.getParameter(price) ); BookDAO bookdao = new BookDAO(); boolean success = bookdao.insertBook(book); if(success) mess

26、age = 成功插入一条记录!; else message = 插入记录错误!; request.setAttribute(result,message); RequestDispatcher view = request.getRequestDispatcher(/bookInsert.jsp); view.forward(request, response); 【步骤9】在DD文件中部署Servlet,将下列代码添加到DD文件的适当位置: bookQuery com.control.BookQueryServlet bookInsert com.control.BookInsertServ

27、let bookQuery /bookquery.do bookInsert /bookinsert.do 四、思考题1. 简述使用数据源访问数据库一般步骤。答:数据库连接的一般步骤是:(1)加载JDBC驱动程序。 (2)建立连接对象。 (3)创建语句对象,语句对象有3种:Statement、PreparedStatement和CallableStatement。 (4)执行SQL语句得到结果集对象,调用ResultSet的有关方法就可以完成对数据库的操作。 (5)关闭建立的各种对象。2. 简述使用数据源访问数据库比使用传统方法的优点。答:使用数据源是目前Web应用开发中建立数据库连接的首选方法。这种方法是事先建立如干连接对象,存放在连接池中。当应用程序需要一个连接对象时就从连接池中取出一个,使用完后再放回连接池。这样就可避免每次请求都创建连接对象,从而降低请求的响应时间,提高效率。11 / 11

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服