JSP中数据库的使用

上传人:zou****hua 文档编号:169158943 上传时间:2022-11-14 格式:DOCX 页数:10 大小:25.23KB
收藏 版权申诉 举报 下载
JSP中数据库的使用_第1页
第1页 / 共10页
JSP中数据库的使用_第2页
第2页 / 共10页
JSP中数据库的使用_第3页
第3页 / 共10页
资源描述:

《JSP中数据库的使用》由会员分享,可在线阅读,更多相关《JSP中数据库的使用(10页珍藏版)》请在装配图网上搜索。

1、第六章一一JSP中数据库的使用、教学内容1. JDBC 基础2. 连接DB的常用方式3. MYSQL4. 记录的查询5. 记录的添加6. 记录的更新与删除、 教学目标1. 理解JSP内置对象;2. 熟练掌握request对象、response对象、session对象、application对象等JSP常用内置对象。三、教学重点及难点1. 重点: request、response、session、application 的用法;2. 难点: session、application 的用法。四、教学方式与方法演示讲解法,任务驱动法,案例教学法,问题探究法,与多媒体教学演示相结合五、实施教学第一部分

2、:新授课一、JDBC 基础1什么是JDBC ? Java DataBase Connectivityjava程序连接和存取数据库的应用程序接口(API)。 由一群类和接口组成,是Java核心API的一部分。 可以使用标准的SQL语句。 作用:通过连接器与数据库建立连接,调用JDBC API发送SQL语句,处理数据库返回结果。 使用JDBC可以使程序开发人员建立一个与数据库和平台无关的编程接口来建立数据库应用程序。 JDBC是Java实现跨平台数据库访问的基础,支持数据库的两层、三层访问模型,所以它既实用又高效。2. JDBC 结构3JDBC驱动程序的四种类型:(1)基于本地API,部分用Jav

3、a来编写的驱动程序此类驱动程序是把客户机API上的JDBC调用转换为DBMS(Database Management System,数据库管理系统)的调用, 如Oracle、DB2等。它像JDBC-ODBC桥驱动程序一样,也要求将某些二进制代码加载到每台客户机上。(2)本地协议纯Java驱动程序这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机上直接调用DBMS服务器, 是 Intranet 访问的一个很实用的解决方法。( 3) JDBC-ODBC 桥加载 ODBC 驱动程序(4)JDBC网络纯Java驱动程序二、连接 DB 的常用方式1.JDBC-ODBC桥

4、加载ODBC驱动程序:JDBC-ODBC桥利用ODBC驱动程序提供JDBC访问。注意:必须将ODBC二进制代码(在许多情况下还包括数据库客户机的代码)加载到使用该驱动程序的每台客户机上, 因此它适用于企业内部网或者是用Java编写的三层结构的应用程序服务器代码。使用JDBC-ODBC桥接器访问数据库的3个步骤:建立JDBC-ODBC桥接器;String dirverName=“sun.jdbc.odbc.JdbcOdbcDriver”;try Class.forName(driverName); catch (ClassNotFoundException e )(2)创建ODBC数据源;和OD

5、BC数据源建立连接;String conURL=ujdbc:odbc:”try Connection conn=DriverManager.getConnection(conURL,userName,userPass); catch (SQLException e )2. JDBC网络纯Java驱动程序此驱动程序将JDBC转换为与DBMS无关的网络协议,之后此网络协议又被某个服务器转换为一种DBMS协议。使用纯JAVA数据库驱动方式访问数据库的2个步骤:(1) 加载纯 Java 数据库驱动程序;String dirverName=“com.mysql.jdbc.Driver”;try Clas

6、s.forName(driverName); catch (ClassNotFoundException e )(2) 和指定的数据库建立连接;String conURL=“jdbc:mysql:/127.0.0.1:3306/DatabaseName”try Connection conn=DriverManager.getConnection(conURL,userName,userPass); catch (SQLException e )三、MYSQL1. 安装 MySQL5.12为MySQL安装前端工具Navicat 83安装 JDBC 驱动:把 mysql-connector-ja

7、va-51 7-bin拷贝到WEB-INFlib 下四、记录的查询与数据库的连接一旦建立,就可用来向它所涉及的数据库传送SQL语句。Statement对象用于将SQL语句发送到数 据库中。JDBC 提供了三种 Statement 对象: Statement、PreparedStatement、CallableStatement1Statement(1) 作用:Statement对象用于发送简单的SQL语句。(2) 创建: Statement stmt = conn.createStatement();(3) 执行数据库操作: 使用Statement对象的executeQuery()方法执行査询

8、操作;使用Statement对象的executeUpdate()方法执行插入、修改和删除操作及数据定义语言语句,将SQL语句作为提供 给 Statement 对象的方法。eg: ResultSet rec = stmtExecuteQuery(SELECT * FROM student);2 PreparedStatement(1) 作用:该对象包含已编译过的SQL语句,用于发送带有一个或多个输入参数的SQL语句。(2) 优点:由于PreparedStatement对象已预编译过,所以其执行效率比Statement对象的执行效率更高。(3) 创建: String sql = “select *

9、 from stu where age ?” );PreparedStatement ps = conn.prepareStatement ( sql ); 该语句为每个输入参数保留一个问号“?作”为占位符。每个问号的值必须在该语句执行之前被设置。 PreparedStatement 拥有一组方法,用于设置输入参数的值。执行语句时,这些输入参数将被送到数据库中。(4) 执行数据库操作具体过程: 创建 PreparedStatement 对象 传递输入参数 ,注意输入参数中数据类型的一致性 执行查询、插入、更新或删除操作3ResultSet(1)作用: ResultSet (结果集)对象包含符合

10、 SQL 语句中条件的所有行集合,它通过一套 get 方法(这些 get 方法可 以访问当前行中的不同列)提供了对这些行中数据的访问。结果集一般是一个表,其中有查询所返回的列标题及相应的 值。(2)结果集类型: TYPE_FORWORD_ONLY:结果集为只读类型,并且读取顺序从头到尾读取记录,只能读一次。 TYPE_SCROLL_SENSITIVE:在他人同时对数据库操作时,会影响结果集的纪录。 TYPE_SCROLL_INSENSITIVE:在他人同时对数据库操作时,不会影响结果集的纪录。Statement stmt =conn.createStatement(ResultSet.TYPE

11、_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); (3)创建: ResultSet rs = stmt.executeQuery(select * from stu);(4)主要方法:a&soZ“他伽:绝对定位到指定记录。/irs/0:当前记录指针移动到第一行。beforeFirst()fast().当前记录指针移动到最后移行。afterLast()-“ext。:把当前记录指针下移一行。当前行有效返回加,否则返回false, previous。:把当前记录指针上移一行。当前行有效返回he,否则返回false.close()getBoolean()

12、,getByte(),getString(),getInt(),getShort(),getLong(), getDouble(),getFloat(),getDate()-getRow():返回当前记录指针所在的行号。行号从开始,若无记录则返厨。 isFirst(),isLast()fisBeforeFirst(),isAfiterLast()五、记录的添加要求:创建一个简易的商品管理后台系统,其中商品信息存放在数据库表中。商品信息至少包含编码、名称、生产地 生产时间、价格等信息。设计流程:设计原型、建立DB、编码、测试1建立DB及相关表:建立DB: Warehouse,建立表:produc

13、t2. 设计页面: login.jsp, confirm.jsp, left.jsp, manage.jsp, selectProduct.jsp, addProduct.jsp, updateProduct.jsp, deleteProduct.jsp3査询操作:顺序査询、随机査询、条件査询、模糊査询、排序査询4添加操作5更新操作6删除操作7在Tag文件中执行数据库操作六、网上投票系统的实现第二部分:概括和总结重点:JDBC的基本概念,连接DB的两种常用方式,记录的査询、添加、更新与删除 难点: JDBC 的基本概念,连接 DB 的两种常用方式, 记录的査询与添加 第三部分:练习 举例:针对

14、重点和难点提问第四部分:布置作业第五部分:熟悉教材代码:/login.jspvhtmlvbody 迎登录商品管理后台系统: 登录 用户名:v/tdvtdxinput type=text name=usernamev/td 密码 : vtdxinput type=text name=passwordv/td vtd colspan=2 align=centervinput type=submit name=Submit value提交v/tdv/trv/table v/formv/bodyv/html/confirm.jspv% page contentType=text/html; chars

15、et=gb2312import =java.sql.* %vhtmlvbody v%String username = request.getParameter(username); String password = request.getParameter(password); boolean success = false;if (username!=null & password!=null ) /连接数据库执行查询操作String driverName=com.mysql.jdbc.Driver;try Class.forName(driverName); catch (ClassN

16、otFoundException e )String conURL=jdbc:mysql:/localhost:3306/warehouse;try Connection conn=DriverManager.getConnection(conURL,root,root);Statement stmt = conn.createStatement();String sql = select * from user where username=+username+and password=+password+;ResultSet rs = stmt.executeQuery(sql);if (

17、rs.next()success = true; catch (SQLException e )e.printStackTrace(); if (success) %vjsp:forwardpage=manage.jspvjsp:paramname=usernamevalue=v%=username%/v/jsp:forwardv%else response.sendRedirect(login.jsp);%v/bodyv/html/left.jspv% page contentType=text/html; charset=gb2312 language=java import =java.

18、sql.* %vhtmlvbody vtable width=100% border=0 vtrvtd colspan=2vimg src=images/cxrecord.jpg width=161 height=22v/td vtd width=79% v/td v/tr vtr vtd width=5% v/tdvtd width=16%vimg src=images/ptcx.jpg width=161 height=22 border=0 usemap=#Mapv/tdvtd rowspan=9  v/td v/trvtr vtd v/td vt

19、dvimg src=images/sicx.jpg width=161 height=22 border=0 usemap=#Map2v/td v/tr vtr vtd v/td vtdvimg src=images/tjcx.jpg width=161 height=22 border=0 usemap=#Map3v/td v/tr vtr vtd v/td vtdvimg src=images/mhcx.jpg width=161 height=22 border=0 usemap=#Map4v/td v/trvtr vtd v/td vtdvimg src=

20、images/pxcx.jpg width=161 height=22 border=0 usemap=#Map5v/td v/trvtr vtd colspan=2vimg src=images/tjrecord.jpg width=161 height=22 border=0 usemap=#Map6v/td v/trvtr vtd colspan=2vimg src=images/gxrecord.jpg width=161 height=22 border=0 usemap=#Map7v/td v/tr vtr vtd colspan=2vimg src=images/screcord

21、.jpg width=161 height=22 border=0 usemap=#Map8v/td v/tr vtr vtd colspan=2 v/td v/trv/tablevmap name=Map varea shape=rect coords=15,3,139,20 href=ptselectProduct.jsp target=mainFramev/map vmap name=Map2 varea shape=rect coords=20,3,134,19 href=sjselectProduct.jsp target=mainFramev/map vmap name=

22、Map3 varea shape=rect coords=21,2,134,20 href=tjselectProduct.jsp target=mainFramev/map vmap name=Map4 varea shape=rect coords=24,4,138,19 href=mhselectProduct.jsp target=mainFramev/map vmap name=Map5 varea shape=rect coords=27,4,142,21 href=pxselectProduct.jsp target=mainFramev/map vmap name=Map6 v

23、area shape=rect coords=36,5,123,19 href=addProduct.jsp target=mainFramevarea shape=rect coords=123,-4,125,5 href=#v/mapvmap name=Map7 varea shape=rect coords=36,2,124,20 href=updateProduct.jsp target=mainFramev/map /manage.jspv%String username = request.getParameter(username);out.println(” 欢迎+userna

24、me+登录系统 ”); / pxselectProduct.jsp 根据条件查询产品信息: 出厂价格:vinput type=radio name=pprice value=asc 升序vinput type=radio name=pprice value=desc 降序v/tdvtd align=center生产时间:vinput type=radio name=pdate value=asc 升序vinput type=radio name=pdate value=desc|降序 v/tdvtdvinput type=submit name=Submit value=提 交v/td v/t

25、rv/tablev/formv% String driverName=com.mysql.jdbc.Driver;try Class.forName(driverName); catch (ClassNotFoundException e )String conURL=jdbc:mysql:/localhost:3306/warehouse; Connection conn=null;try conn=DriverManager.getConnection(conURL,root,root);Statementstmt=conn.createStatement(ResultSet.TYPE_S

26、CROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);String sql = select * from product ;String condition =null;String pprice = request.getParameter(pprice);String pdate = request.getParameter(pdate);if (pprice!=null & !pprice.equals()condition = order by pPrice +pprice;if (pdate!=null & !pdate.equals()if(

27、 condition=null) condition = order by pDate +pdate; else condition = condition + , pDate +pdate;if (condition!=null) sql = sql + + condition ; ResultSet rs = stmt.executeQuery(sql); % vtable width=100% border=0vtr align=centervtd width=15% 产品编码 v/tdvtd width=15% 产品名称 v/tdvtd width=15% 生产地址 v/tdvtd w

28、idth=15% 生产时间 v/tdvtd width=15% 出厂价格 v/td v/trv% while(rs.next() % vtr align=centervtd width=15%v%=rs.getInt(pid)%v/td vtd width=15%v%=rs.getString(pname)%v/tdvtd width=15%v%=rs.getString(paddress)%v/td vtd width=15%v%=rs.getString(pdate)%v/td vtd width=15%v%=rs.getDouble(pprice)%v/td v/trv% catch (

29、Exception e )e.printStackTrace(); finallyif (conn!=null)conn.close();%v/tablev/bodyv/html / ptselectProduct.jspv% page contentType=text/html; charset=gb2312 language=java import=java.sql.* %vhtmlvbody 根据条件查询产品信息:vform action= method=postvtable width=100% border=0vtr vtd align=center 出厂价格:vinput type

30、=radio name=pprice value=asc 升序vinput type=radio name=pprice value=desc降序 v /tdvtd align=center 生产时间:vinput type=radio name=pdate value=asc 升序vinput type=radio name=pdate value=desc|降序 v/td vtdxinput type=submit name=Submit value=提 交v/td v/trv/tablev/form v% String driverName=com.mysql.jdbc.Driver;t

31、ry Class.forName(driverName); catch (ClassNotFoundException e )String conURL=jdbc:mysql:/localhost:3306/warehouse; Connection conn=null;try conn=DriverManager.getConnection(conURL,root,root); Statement stmt =conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);String sq

32、l = select * from product ;String condition =null;String pprice = request.getParameter(pprice); String pdate = request.getParameter(pdate);if (pprice!=null & !pprice.equals()condition = order by pPrice +pprice;if (pdate!=null & !pdate.equals()if( condition=null) condition = order by pDate +pdate; el

33、se condition = condition + , pDate +pdate; if (condition!=null)sql = sql + + condition ;ResultSet rs = stmt.executeQuery(sql); % vtable width=100% border=0vtr align=centervtd width=15% 产品编码 v/tdvtd width=15% 产品名称 v/tdvtd width=15% 生产地址 v/tdvtd width=15% 生产时间v/tdvtd width=15% 出厂价格 v/td v/trv% while(r

34、s.next() %vtr align=centervtd width=15%v%=rs.getInt(pid)%v/td vtd width=15%v%=rs.getString(pname)%v/td vtd width=15%v%=rs.getString(paddress)%v/td vtd width=15%v%=rs.getString(pdate)%v/td vtd width=15%v%=rs.getDouble(pprice)%v/td v/trv% catch (Exception e )e.printStackTrace(); finallyif (conn!=null)

35、conn.close();%v/tablev/bodyv/html /mhselectProduct.jspv% page contentType=text/html; charset=gb2312 language=java import=java.sql.* %vhtmlvbody 根据条件查询产品信息:vform action= method=postvtable width=100% border=0vtr vtd align=center产品名称:vinput name=productName type=text size=15v/tdvtd align=center 生产地址:vi

36、nput name=productAddress type=text size=15v/tdvtdvinput type=submit name=Submit value=提交v/td v/trv/tablev/formv% String driverName=com.mysql.jdbc.Driver;try Class.forName(driverName); catch (ClassNotFoundException e )String conURL=jdbc:mysql:/localhost:3306/warehouse; Connection conn=null;try conn=D

37、riverManager.getConnection(conURL,root,root); Statement stmt =conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);String sql = select * from product ;String condition =null;String pName = request.getParameter(productName);String pAddress = request.getParameter(productA

38、ddress);String lowPrice = request.getParameter(lowPrice); String highPrice = request.getParameter(highPrice);if (pName!=null & !pName.equals() byte b = pName.getBytes(ISO-8859-1); pName=new String(b);condition = pName like %+pName+% ; if (pAddress!=null & !pAddress.equals() byte b = pAddress.getByte

39、s(ISO-8859-1); pAddress=new String(b); if( condition=null) condition = pAddress like %+pAddress+% ;else condition = condition + and pAddress like %+pAddress+% ;if (condition!=null)sql = sql + where + condition ;ResultSet rs = stmt.executeQuery(sql); % 产品编码 vtd width=15% 产品名称 vtd width=15% 生产地址 v/tdv

40、td width=15% 生产时间 vtd width=15% 出场价格 vtr align=center vtd width=15%v%=rs.getInt(pid)%v/tdvtd width=15%v%=rs.getString(pname)%v/td vtd width=15%v%=rs.getString(paddress)%v/td vtd width=15%v%=rs.getString(pdate)%v/td vtd width=15%v%=rs.getDouble(pprice)%v/tdv/tr v% catch (Exception e )e.printStackTrac

41、e(); finallyif (conn!=null)conn.close();%v/tablev/bodyv/html / sjselectProduct.jspv% page contentType=text/html; charset=gb2312 language=java import=java.sql.* %vhtmlvbody 随机查询产品信息:vform action= method=postvtable width=100% border=0vtrvtd align=right输入要查询的记录号:v/tdvtdvinput type=text name=recordNum v

42、input type=submit name=Submit value提交 v/td vtd v/td v/trv/tablev/formv% String driverName=com.mysql.jdbc.Driver;try Class.forName(driverName); catch (ClassNotFoundException e )String conURL=jdbc:mysql:/localhost:3306/warehouse; Connection conn=null;try conn=DriverManager.getConnection(conURL,ro

43、ot,root);Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); String sql = select * from product ;ResultSet rs = stmt.executeQuery(sql); %vtable width=100% border=0vtr align=center vtd width=15% 产品编码 v/tdvtd width=15% 产品名称 v/tdvtd width=15% 生产地址 v/tdvt

44、d width=15% 生产时间 v/tdvtd width=15% 出场价格 v/td v/trv%String recordNum = request.getParameter(recordNum);if (!recordNum.equals()int num = Integer.parseInt(recordNum); rs.last(); int allNum = rs.getRow();if (num0 & numv=allNum) rs.absolute(num); %vtr align=center vtd width=15%v%=rs.getInt(pid)%v/tdvtd w

45、idth=15%v%=rs.getString(pname)%v/td vtd width=15%v%=rs.getString(paddress)%v/td vtd width=15%v%=rs.getString(pdate)%v/td vtd width=15%v%=rs.getDouble(pprice)%v/tdv/tr v% catch (Exception e )e.printStackTrace(); finallyif (conn!=null)conn.close();%v/tablev/bodyv/html / tjselectProduct.jspv% page cont

46、entType=text/html; charset=gb2312 language=java import=java.sql.* errorPage= %vhtmlvheadvmeta http-equiv=Content-Type content=text/html; charset=gb2312vtitle商品管理后台系统v/titlev/headvbody根据条件查询产品信息:vform action= method=postvtable width=100% border=0vtrvtd align=center 产品名称: vinput name=productName type=

47、text size=15v/tdvtd align=center 生产地址:vinput name=productAddress type=text size=15v/tdvtd align=center 价格范围:在之间v/td=+lowPrice+ ;else condition = condition + and pPrice=+lowPrice+ ;if (highPrice!=null & !highPrice.equals()if (condition=null) condition = pPrice=+highPrice+ ;else condition = condition + and pPrice 产品编码 产品名称 生产地址 v/td 生产时间vtd width=15% 出场价格 v/td / addProduct.jsp商品管理后台系统/titleadd/ updateProduct.jsp商品管理后台系统/titleadd/ deleteProduct.jsp vtitle商品管理后台系统/titledelete

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!