使用jdbcjavabean操作数据库_第1页
使用jdbcjavabean操作数据库_第2页
使用jdbcjavabean操作数据库_第3页
使用jdbcjavabean操作数据库_第4页
使用jdbcjavabean操作数据库_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章使用JDBC和JavaBean操作数据库第二单元第1页/共38页本章相关学习资源《使用JDBC操作数据库》专题《使用JavaBean封装数据》专题《使用JSP/Servlet技术开发新闻发布系统》第2章《使用JDBC和JavaBean操作数据库》第2页/共38页学习平台“Java

Web开发技术”课程学生用书预习检查使用JDBC技术如何实现数据库的访问?为什么连接池技术可以提高数据库访问效率?在JSP中如何实现页面的复用?第3页/共38页提问本章任务任务1:使用JDBC读取个人通讯录任务2:使用配置文件保存数据库信息任务3:实现对个人通讯录的编辑任务4:使用数据源和连接池优化数据库访问任务5:使用JSP标签显示个人通讯录第4页/共38页理解JDBC的工作原理能够使用数据源和连接池优化数据库访问能够使用JSP标签优化页面代码能够使用JDBC操作数据库能够使用配置文件保存数据库信息本章目标点重点难点重点难点重第5页/共38页串讲:JDBC概述第6页/共38页提问在之前的程序中,数据都是预先写好的,如何实现数据的动态变化?JDBCJava数据库连接技术(JavaDataBaseConnectivity)应用程序数据库服务器通过JDBC实现数据交互串讲:JDBC的工作原理SqlServerJDBCAPIJDBCDriverManagerJDBC驱动Java应用程序OracleJDBC驱动JDBC的内容JDBCAPI定义了一系列的接口和类,集成在java.sql和javax.sql包中DriverManager管理各种不同的JDBC驱动JDBC驱动负责连接不同类型的数据库第7页/共38页讲解:JDBC访问数据库的步骤JDBC访问数据库步骤124获取Connection连接DriverManager加载驱动创建Statement执行SQL语句返回ResultSet查询结果应用程序数据库服务器3第8页/共38页串讲:JDBC访问数据库的步骤加载驱动获取数据库连接Class.forName("JDBC驱动类名称");第9页/共38页Connectionconn=DriverManager.getConnection(数据库URL,数据库用户名,密码)在加载驱动及获取连接过程中,可能会出现异常,因此需要注意进行异常处理串讲:JDBC访问数据库的步骤Statement对象通过Connection对象创建用于执行SQL语句方法说明ResultSetexecuteQuery(Stringsql)执行SQL查询并获取到ResultSet对象intexecuteUpdate(Stringsql)可以执行插入、删除、更新等操作,返回值是执行该操作所影响的行数voidclose()关闭Statement对象Statementstmt=conn.createStatement();第10页/共38页语法串讲:JDBC访问数据库的步骤ResultSet结果集用于存储查询结果只在执行select语句时返回方法说明booleannext()将光标从当前位置向下移动一行voidclose()关闭ResultSet对象StringgetString(StringcolLabel)根据列名称对应的值StringgetString(intcolIndex))根据列的位置获取对应的值intgetInt(intcolIndex)根据列的位置获取对应值intgetInt(StringcolLabel)根据列的名称获取对应的值第11页/共38页串讲:JDBC访问数据库的步骤执行SQL命令并处理结果…获取数据库连接代码…Stringsql="select*fromnews_detail";//获取Statement对象Statementstmt=connection.createStatement();//执行SQL命令,返回查询结果集ResultSetrs=stmt.executeQuery(sql);//从结果集中读取数据while(rs.next()){intid=rs.getInt("id");Stringtitle=rs.getString("title");

…….}创建Statement对象执行查询,返回结果集ResultSet结果集只有在执行查询命令时才会被返回读取数据第12页/共38页串讲:JDBC访问数据库的步骤释放资源try{if(rs!=null){ rs.close(); }if(stmt!=null){ stmt.close();}if(connection!=null){ connection.close();}}catch(SQLExceptione){e.printStackTrace();}释放资源前要判断资源是否为NULL,以免错误关闭引发异常演示示例:使用JDBC查询新闻信息第13页/共38页上机练习需求说明使用JDBC实现个人通讯录的访问,在控制台输出联系人信息数据表要求字段至少包括姓名、年龄、电话、联系地址完成时间:30分钟共性问题集中讲解第14页/共38页练习讲解:使用配置文件访问数据库配置文件以.properties为文件后缀以键值(key/value)的方式组织内容一次编写,随时调用driver=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:@localhost:1521:newsusername=scottpassword=tiger perties键(key)=值(value)配置信息的编写第15页/共38页讲解:使用配置文件访问数据库Properties类读取配置文件Properties类位于java.util包中,可以读取以键值保存的数据演示示例:使用配置文件保存数据库信息方法说明StringgetProperty(Stringkey)根据键名在属性列表中查找对应的值voidload(InputStreaminStream)从输入流中读取属性列表 StringconfigFile="perties"; properties=newProperties(); InputStreamin=ConfigManager.class.getClassLoader().getResourceAsStream(configFile); try{//读取配置文件

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

//根据键(key)返回值(value) Stringdriver=properties.getProperty("driver")将配置信息以流方式读取演示示例:使用配置文件保存数据库信息使用load()加载输入流根据属性名称获取属性值第16页/共38页上机练习需求说明在前次上机基础上,使用配置文件实现个人通讯录的访问,并读取信息在控制台输出显示完成时间:10分钟共性问题集中讲解第17页/共38页练习小结JDBC访问数据库的步骤有哪些?使用配置文件优化数据库访问的好处是什么?第18页/共38页提问串讲:PreparedStatement概述PreparedStatement概述继承自Statement接口能够对SQL语句进行预编译PreparedStatement的优势提高SQL语句执行效率提高安全性Statement接口PreparedStatement接口第19页/共38页讲解:PreparedStatement的应用PreparedStatement的应用SQL语句使用“?”作为数据占位符在创建时对SQL语句进行预编译使用setXxx()方法设置数据Stringsql="insertintousers(name,age)values(?,?)";PreparedStatementps=conn.prepareStatement(sql); ps.setString(1,

"Jack");ps.setInt(2,20);ps.executeUpdate();演示示例:使用PreparedStatement操作数据库占位符与字段数量保持一致对sql语句进行预编译根据字段类型进行设置第20页/共38页上机练习需求说明使用PreparedStatement实现对个人通讯录信息的编辑编写公共类BaseDao及接口使用PreparedStatement实现数据编辑完成时间:30分钟共性问题集中讲解第21页/共38页练习串讲:为什么使用连接池现在我们能够使用JDBC访问数据库了,这种实现方式是否存在不足呢?分析访问前需要先获取连接每次操作结束后,要释放资源频繁的连接导致系统的安全性和稳定性差使用连接池可以解决以上问题第22页/共38页问题生活中的连接池串讲:连接池概述等待连接普通电话专线电话直接通话第23页/共38页串讲:连接池的工作原理连接池的工作原理连接池是由容器提供的,用来管理池中连接对象Connection1Connection2Connection3请求连接返回连接连接池自动分配连接对象并对闲置的连接进行回收连接池应用程序数据库第24页/共38页串讲:数据源连接池中的连接对象是由谁创建的呢?数据源(DataSource)javax.sql.DataSource接口负责建立与数据库的连接由Tomcat提供,将连接保存在连接池中第25页/共38页问题在Tomcat中配置数据源导入数据库文件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"/>讲解:数据源的配置数据源名称指定管理者及数据源的类型连接数量及等待时间数据库相关信息第26页/共38页JNDI读取数据源JNDI是Java命名与目录接口通过名称与对象的绑定实现资源获取讲解:数据源的读取演示示例:数据源的配置与读取//初始化上下文Contextcxt=newInitialContext();//获取与逻辑名相关联的数据源对象DataSourceds=(DataSource)cxt.lookup("p/env/jdbc/news");conn=ds.getConnection();通过Context接口的lookup()查找数据源p/env为JavaEE默认路径jdbc/news为DataSource的名称第27页/共38页上机练习需求说明配置数据源,实现通过数据源和连接池的方式访问个人通讯录完成时间:10分钟共性问题集中讲解第28页/共38页练习串讲:JSP标签使用JSP标签优化页面显示封装页面显示功能页面代码简介提高可读性,易于维护第29页/共38页提问使用脚本与HTML嵌套,页面代码很乱,可读性差,也不易于维护,能否进行改进?讲解:JSP标签创建JavaBean标签设置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>的使用调用JavaBean设置JavaBean属性第30页/共38页语法语法上机练习需求说明修改个人通讯录查询显示方式,并通过JSP标签显示个人通讯录的信息完成时间:10分钟共性问题集中讲解第31页/共38页练习讲解:使用标签获取属性获取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>获取属性串讲:页面的复用当多个JSP页面中有

温馨提示

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

评论

0/150

提交评论