版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块4数据库操作JavaWeb程序设计“十四五”职业教育国家规划教材配套资源目录项目10显示用户信息列表项目11JSP实现用户注册项目12分页显示用户信息列表项目13使用连接池优化数据库连接小结习题项目10显示用户信息列表10.1项目描述与实现(1)描述通过JDBC连接Mysql数据库,查询hncst数据库中users数据表中的数据,并以表格形式显示项目10显示用户信息列表10.1项目描述与实现字段名数据类型长度是否为空约束备注idInt否主键编号usernameVarchar50否用户名passwordsVarchar50否密码sexVarchar10是性别emailVarchar50是lanVarchar50是熟练开发语言introVarchar100是简介timesint是登录次数lasttimedatetime8是上次登录时间项目10显示用户信息列表10.1项目描述与实现(2)实现过程,exam10_1_list.jsp代码分析
在本程序中,使用Mysql的JDBC驱动连接了数据库,并读取数据。其连接过程代码为:Class.forName(“com.mysql.jdbc.Driver”).newInstance();Stringurl=“jdbc:mysql://:3306/hncst”;Stringuser=“hncst”;Stringpasswords=“123456”;conn=DriverManager.getConnection(url,user,passwords);stat=conn.createStatement();项目10显示用户信息列表10.1项目描述与实现(3)代码分析Class.forName(“”)用来动态加载数据库驱动类,并使用newInstance静态方法来实例化对象,在本例中,加载的驱动为com.mysql.jdbc.Driver。
通过DriverManager对象的getConnection方法建立和指定数据库的连接,url为数据库连接串,user为数据库登录账号,passwords为数据库登录密码。
通过Connection对象的createStatement方法创建Statement对象,至此,数据库便可以操作了。可以通过Statement对象的executeQuery方法执行sql语句,从而得到一个RecordSet记录集,使用RecordSet接口的getString方法获得字段的值。最后,关闭所有对象。项目10显示用户信息列表10.2新知识点JDBC简介JDBC的英文名称是JavaDatabaseConnecivity,中文名称是Java数据库连接,它是一种用于执行SQL语句的JavaAPI类包,由一组用Java语言编写的类和接口组成,通过它可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序。Mysql数据库简介MySQL是一个小型关系型数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点受到了众多中小型网站制作者的青睐。MySQL的开发也得到了很多著名厂商和技术团队支持。项目10显示用户信息列表10.2新知识点JDBC连接Mysql数据库的基本步骤1驱动下载要通过JDBC连接数据库需要使用数据库厂商提供的JDBCDrive。在Mysql官方网站下载其JDBC驱动,官网地址:项目10显示用户信息列表10.2新知识点JDBC连接Mysql数据库的基本步骤2将下载好的驱动mysql-connector-java-5.1.17-bin.jar文件(此处的5.1.17为驱动版本号),复制到当前工程的WEB-INF的lib目录中项目10显示用户信息列表10.2新知识点JDBC连接Mysql3编写数据库连接程序(1)加载驱动。(2)建立连接对象。Class.forName(“com.mysql.jdbc.Driver”).newInstance();Stringurl=”jdbc:mysql://localhost:3306/hncst”;//连接字符串Connectionconn=DriverManager.getConnection(url);项目10显示用户信息列表10.2新知识点JDBC连接Mysql3编写数据库连接程序(3)建立Statement对象或PreparedStatement对象。Statement是PreparedStatement的父接口。Statement对象用于执行不带参数的简单SQL语句;PreparedStatement对象用于执行预编译SQL语句;也就是说,Statement接口提供了基本方法,而PreparedStatement接口添加了处理IN参数的方法。对于需多次执行的SQL语句,用PreparedStatement即可以减轻编码负担,又可以提高系统效率。Statementstmt=conn.createStatement();//创建Statement对象Stringsql=”select*fromuserswhereoolean=?Andpassword=?”;PreparedStatementpstmt=conn.prepareStatement(sql);//创建Preparedment对象pstmt.setString(1,”admin”);pstmt.setString(2,”liubin”);项目10显示用户信息列表10.2新知识点JDBC连接Mysql3编写数据库连接程序(4)执行SQL语句。A.执行SQL查询B.执行insert,update,delete等语句,先定义sqlStatement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate和execute。使用哪一个方法由SQL语句所产生的内容决定。Stringsql=”select*fromusers”;ResultSetrs=stmt.executeQuery(sql);stmt.executeUpdate(sql);项目10显示用户信息列表10.2新知识点JDBC连接Mysql3编写数据库连接程序(5)关闭对象,释放资源。通过上面五个步骤,就可以完成JDBC连接数据库,执行SQL语句,并在执行完后释放数据库资源。rs.close();stmt.close();conn.close();项目10显示用户信息列表10.3扩展——JDBC连接SQLServer、Oracle1JDBC连接SQLServer(1)在MicrosoftSQLServer的官网下载SQLServerJDBC驱动(不同版本的数据库对应不同驱动程序)。将下载好的驱动sqljdbc.jar文件复制到网站的lib目录中项目10显示用户信息列表10.3扩展——Mysql数据库的安装和使用下载安装Myslq项目10显示用户信息列表10.4扩展——JDBC连接SQLServer、Oracle1JDBC连接SQLServer将SQLServer的验证方式改为混合验证方式,并设置合法用户名和密码。打开MicrosoftSQLServerManagementStudioExpress,通过右键点击数据库“服务器属性”面板,在“安全”选项里进行配置,重启SQLServer后生效项目10显示用户信息列表10.4扩展——JDBC连接SQLServer、Oracle1JDBC连接SQLServer(3)创建exam4_1_sqlserver.jsp文件<%Stringurl=”jdbc:sqlserver://localhost:1433;DatabaseName=hncst”;Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);Connectionconn;conn=DriverManager.getConnection(url,”hncst”,”123456”);out.print(“通过JDBC驱动和SQLServer数据库连接成功”);conn.close();%>项目10显示用户信息列表10.4扩展——JDBC连接SQLServer、Oracle1JDBC连接SQLServer(3)代码分析:基本步骤和连接Mysql数据库类似,只需要修改连接字符串即可,JDBC连接SQLServer的连接驱动为“com.microsoft.sqlserver.jdbc.SQLServerDriver”。url表示连接字符串,其格式为:jdbc:sqlserver://数据库地址:端口;DatabaseName=数据库名。项目10显示用户信息列表10.4扩展——JDBC连接SQLServer、Oracle2JDBC连接Oracle代码分析:连接Oracle的驱动程序为oracle.jdbc.driver.OracleDriver,连接字符串格式url为jdbc:oracle:thin:@数据库地址:端口号:数据库SID。<%Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();Stringurl=“jdbc:oracle:thin:@localhost:1521:orcl”;//orcl为数据库的SIDStringuser=“hncst”;Stringpassword=“hncst”;Connectionconn=DriverManager.getConnection(url,user,password);out.print(“通过JDBC驱动和oracle数据库连接成功”);conn.close();%>项目11JSP实现用户注册11.1项目描述与实现(1)描述编写程序完成用户注册功能,即通过JDBC连接数据库,并向users表中添加一条新记录。注册的资料包含姓名、密码、性别、熟练开发语言、个人简介。项目11JSP实现用户注册11.1项目描述与实现(2)实现过程1.在Dreamweaver设计制作表单页面2.获取表单数据,并将其插入数据表中<% request.setCharacterEncoding(“utf-8”); Stringusername=request.getParameter(“username”); Stringpassword=request.getParameter(“password”); Stringsex=request.getParameter(“sex”); Stringemail=request.getParameter(“email”); Stringintro=request.getParameter(“intro”); String[]lan=request.getParameterValues(“lan”); Stringlans=“”; if(lan!=null){ for(int©=0;©<lan.length;i++){ lans=lans+lan[i]+“,”; } } Connectionconn=null; Statementstat=null; ResultSetrs=null;项目11JSP实现用户注册11.1项目描述与实现(2)实现过程代码分析:程序通过request对象的getParameter方法取得表单中的各元素。其次连接数据库,创建Statement对象,并调用其executeUpdate方法执行插入数据库操作。Class.forName(“com.mysql.jdbc.Driver”).newInstance(); Stringurl=“jdbc:mysql://:3306/hncst”; Stringuser=“hncst”; Stringpasswords=“123456”; conn=DriverManager.getConnection(url,user,passwords); stat=conn.createStatement(); Stringsql=“INSERTINTO`user`(username,passwords,sex,email,lan,intro)values(‘”+username+“’,’”+password+“’,’”+sex+“’,’”+email+“’,’”+lans+“’,’”+intro+“’);”; stat.executeUpdate(sql); out.println(“用户注册成功”); stat.close(); conn.close(); %>项目11JSP实现用户注册11.2新知识点——Connection、Statement、ResultSet等对象的常用方法类型类、接口或者异常说明类Date接收数据库的Date对象DriverManager注册、连接以及注销等管理数据库驱动程序任务DriverPropertyInfo管理数据库驱动程序的属性Time接收数据库的Time对象Types提供预定义的整数列表与各种数据类型的一一对应接口ArrayJava语言与SQL语言中的ARRAY类型的映射BlobJava语言与SQL语言中的BLOB类型的映射CallableStatemet执行SQL存储过程ClobJava语言与SQL语言中的CLOB类型的映射Connection应用程序与特定数据库的连接DatabaseMetaData数据库的有关信息Driver驱动程序必须实现的接口项目11JSP实现用户注册11.2新知识点——Connection、Statement、ResultSet等对象的常用方法类型类、接口或者异常说明接口ParameterMetaDataPreparedStatement对象中变量的类型和属性PreparedStatement代表预编译的SQL语句RefJava语言与SQL语言中的REF类型的映射ResultSet接收SQL语句并返回结果ResultSetMetaData查询数据库返回的结果集的有关信息SQLDataJava语言与SAL语言中用户自定义类型的映射Statement执行SQL语句并返回结果StructJava语言与SQL语言中的structured类型的映射异常
BatchUpdatedExceptions批处理的作业中至少有一条指令失败DataTruncation数据被意外截断SQLException数据存取中的错误信息SQLWarning数据存取中的警告项目11JSP实现用户注册11.2新知识点——Connection、Statement、ResultSet等对象的常用方法1.Driver接口2.DriverManager接口3.Connection接口4.Statement接口5.PreparedStatement接口6.ResultSet接口项目11JSP实现用户注册11.3扩展
数据库连接是JDBC数据库应用程序中最为耗时的一个部分。服务器的资源有限,程序如果一直保持数据库的连接状态,就会消耗数据库服务器的资源,影响服务器的正常响应。在建立数据库连接并使用结束后,应调用close方法关闭对象,释放资源。代码分析:将数据库连接中用到的对象调用close方法进行回收即可,在回收时要注意回收的顺序,先是RecordSet对象,然后是Statement对象,最后是Connection对象。<%//资源回收代码片段
try{
if(stat!=null){//如果statement对象不为空则回收 stat.close(); } }catch(Exceptione){ }
try{
if(conn!=null){//如果connection对象不为空则回收 conn.close(); } }catch(Exceptione){ } %>项目12分页显示用户信息列表12.1项目描述与实现(1)项目描述将项目10任务实现后的用户列表进行分页显示,每页显示5条,并显示当前页码,总页数,上一页连接和下一页连接。项目12分页显示用户信息列表12.1项目描述与实现(2)项目实现代码exam12_fenye.jsp代码分析A.总页数的计算,通过如下代码获取数据库符合条件的总数,求的总记录数rowcount,然后用每页显示记录数pagesize进行求余计算,算出总页数rowcount=rs.getInt(1);if(rowcount%pagesize==0){ pagecount=rowcount/pagesize;}else{ pagecount=rowcount/pagesize+1;}项目12分页显示用户信息列表12.1项目描述与实现B.总页数的计算,通过如下代码
直接传当前页码值过来,由id变量获取,若id为赋值,则page赋值为1;若id超出了最大页码数,则page等于最大页码数。C.检索当前页需显示的记录。通过SQL控制检索当前需要显示的记录集。MYSQL以limit来计算检索的起始位置和条数。即条件如下:
通过Mysql的sql语句中的Limit关键字,输出部分记录,达到分页的目的。最后,使用表格输出记录内容后,显示上一页、下一页、首页和尾页连接。page=id;if(page>pagecount) {page=pagecount;}if(page<0) {page=1;}limit“+(1)*pagesize+”,”+pagesize;项目12分页显示用户信息列表12.2新知识点——分页分页优点方便用户阅读、减轻服务器负担、提高运行速度分页方法
通过RecordSet对象的方法,获得记录集中的记录条数,已知每页显示的记录个数,可以很容易的计算出分页的页数,页数等于记录条数除以每页记录条数,再将结果向上取整,即页数=总记录条数/每页记录数;当前页显示的记录可以通过SQL中Select语句的Limit来限定,已知当前页码,则显示记录的起始位置为(当前页码-1)*每页记录数
分页只显示符合要求的部分记录,所以一定要设计翻页连接帮助用户翻页浏览,常用的翻页连接有首页、尾页、上一页和下一页,首页即页码为1的页面,尾页即页码为总页数的页面,上一页即页码为当前页减1的页面,下一页即页码为当前页加1的页面,根据这些设置超连接进行翻页Select*fromuserslimit(当前页码-1)*每页记录数,每页记录数项目12分页显示用户信息列表12.3扩展——各种数据库的数据分页SQLServerOracleSELECTTOP当前页*每页记录数*FROMusersWH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋学生换季健康防护指南专题培训课件
- 基于线性遗传规划的动态符号回归结题报告
- 海理定理的模糊集扩展
- 基于计算机视觉的施工现场安全帽佩戴检测可行性分析
- 学习化社会中的成人教育
- 员工培训制度设计方案模板
- 事业编审计岗2026历年真题试卷
- 2026年秋季学期山区群众应急避险常识课件
- 2026年高等学校英语应用能力考试B级真题(含详细答案解析)
- 2026年大学英语三级(A级)考试真题试卷及详细答案解析
- 2026年度抗菌药物培训试题附答案
- 2026年投资顾问初阶面试题及答案
- 【方案】2026国资穿透式监管数智化解决方案
- 第一单元 观察简单组合体(单元自测基础卷)-2026人教版五年级数学上册(A4版)
- 放射医学辐射防护与安全培训
- 2026-2027学年八年级上学期道法 第一单元测试卷(人教版)
- 0-天津大学关于博士、硕士学位论文统一格式(2021)Format for thesis
- 陕西省建设工程质量检测报告格式及编写指南
- 2026秋小学沪教版(深圳)英语四年级上册学期教学计划含教学进度表
- 老年人脑血管病的早期识别和治疗
- 生物安全质量保障体系文件手册
评论
0/150
提交评论