




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章连接MySQL数据库,预习检查,请说出JDBC的两种常用驱动方式什么是持久化?主要的持久化操作有哪些?什么是DAO模式,使用该模式有哪些优势?DAO模式由哪几部分组成?,集中测试,2/38,回顾与作业点评,事务具有哪些特性?普通索引、唯一索引、主键索引的区别是什么?视图中是否可以进行插入和删除操作?点评作业的提交情况和共性问题,提问,作业点评,3/38,本章任务,使用纯Java方式连接数据库使用DAO模式实现主人登录,4/38,本章目标,掌握JDBC-ODBC连接数据库的两种方式掌握DAO模式,5/38,回顾JDBC,JDBC的主要作用是什么?JDBC访问数据时常用的类和接口有哪些,它们的作用是什么?JDBC访问数据的步骤是什么?,提问,6/38,JDBC驱动5-1,JDBC驱动由数据库厂商提供在个人开发与测试中,可以使用JDBC-ODBC桥连方式在生产型开发中,推荐使用纯Java驱动方式,DBServer,DBServer,JDBCAPI,JDBCDriverManager,纯Java驱动,JDBCODBC桥,Java应用程序,ODBC,7/38,使用JDBC-ODBC桥方式连接数据库将对JDBCAPI的调用,转换为对另一组数据库连接API的调用优点:可以访问所有ODBC可以访问的数据库缺点:执行效率低、功能不够强大,JDBC-ODBC桥,Java应用程序,JDBCAPI,ODBCAPI,ODBC层,DBServer,JDBC驱动5-2,8/38,JDBC驱动5-3,使用JDBC-ODBC进行桥连配置数据源:控制面板ODBC数据源系统DNS编程获取连接,Connectionconn=null;tryClass.forName(com.mysql.jdbc.Driver);catch(ClassNotFoundExceptione)tryconn=DriverManager.getConnection(jdbc:odbc:myDB,root,root);/省略代码catch(SQLExceptione)finallytryconn.close();catch(SQLExceptione),关闭连接,建立连接,加载驱动,必须进行相关异常处理,示例,9/38,JDBC驱动5-4,使用纯Java方式连接数据库由JDBC驱动直接访问数据库优点:100%Java,快又可跨平台缺点:访问不同的数据库需要下载专用的JDBC驱动,JDBC驱动,Java应用程序,JDBCAPI,DBServer,10/38,JDBC驱动5-5,Connectionconn=null;tryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundExceptione)tryconn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/epet,epetadmin,0000);/省略代码catch(SQLExceptione)finallytryconn.close();catch(SQLExceptione),关闭连接,建立连接,加载驱动,必须进行相关异常处理,示例,11/38,学员操作使用纯Java方式连接数据库,需求说明数据库为MySQL数据库名“epet”,用户名“epetadmin”,密码“0000”使用纯Java方式连接该数据库如果连接成功,输出“建立连接成功!”如果连接失败,输出“建立连接失败!”进行相关异常处理,练习,12/38,常见问题及解决办法代码规范问题调试技巧,共性问题集中讲解,13/38,JDBC,读取,查找,保存,删除,修改,回顾JDBC操作,将程序中的数据在瞬时状态和持久状态间转换的机制即为数据持久化,14/38,持久化的实现方式,数据库普通文件XML文件,数据库,普通文件,XML文件,15/38,为什么进行JDBC封装3-1,Scannerinput=newScanner(System.in);System.out.print(请输入登录名:);Stringname=input.next();System.out.print(请输入登录密码:);Stringpassword=input.next();/省略加载驱动tryconn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/epet,epetadmin,0000););/省略代码if(rs.next()System.out.println(登录成功,欢迎您!);elseSystem.out.println(登录失败,请重新输入!);/省略代码catch(SQLExceptione)finally,业务相关代码,数据访问代码,示例,16/38,为什么进行JDBC封装3-2,采用面向接口编程,可以降低代码间的耦合性,17/38,如何进行JDBC封装,隔离业务逻辑代码和数据访问代码隔离不同数据库的实现,业务逻辑代码调用数据访问接口,为什么进行JDBC封装3-3,18/38,将对宠物的所有操作抽取成接口,实现JDBC封装6-1,publicinterfacePetDaointsave(Petpet);intdel(Petpet);intupdate(Petpet);PetgetByName(Stringname);ListfindByName(Stringname);ListfindByType(Stringtype);,以对象传参数,接口由不同数据库的实现类分别实现,示例,19/38,定义实体类Pet类包含相关属性实现属性的getter/setter方法,publicclassPetprivateintid;/宠物idprivateintmasterId;/主人idprivateStringname;/昵称publicintgetId()returnid;publicvoidsetId(intid)this.id=id;,属性,getter/setter方法,实现数据访问接口,实现JDBC封装6-2,示例,20/38,PetDao实现类的方法:update()方法,publicclassPetDaoMySQLImplimplementsPetDaopublicintupdate(Petpet)Stringdriver=com.mysql.jdbc.Driver;Stringurl=jdbc:mysql:/localhost:3306/epet;Stringsql=updatepetsetstatus=0whereid=?;pstmt=conn.prepareStatement(sql);pstmt.setInt(1,pet.getId();result=pstmt.executeUpdate();finallyif(null!=pstmt)pstmt.close();if(null!=conn)conn.close();,数据库连接信息,执行更新操作,在finally块中关闭数据库连接,实现JDBC封装6-3,通用的操作是否能够进一步简化?,示例,21/38,数据库工具类2-1,将通用的操作(打开、关闭连接等)封装到工具类,publicclassBaseDaoprivateStringdriver=com.mysql.jdbc.Driver;privateStringurl=jdbc:mysql:/localhost:3306/epet;publicConnectiongetConnection()Class.forName(driver);conn=DriverManager.getConnection(url,user,password);returnconn;publicvoidcloseAll(Connectionconn,Statementstmt,ResultSetrs)if(rs!=null)rs.close();if(stmt!=null)stmt.close();,获取数据库连接,关闭数据库连接,实现JDBC封装6-4,示例,22/38,数据库工具类2-2,数据库工具类BaseDao:增、删、改的通用方法,publicintexceuteUpdate(StringpreparedSql,Objectparam)conn=getConnection();trypstmt=conn.prepareStatement(preparedSql);if(param!=null)for(inti=0;iparam.length;i+)/为预编译sql设置参数pstmt.setObject(i+1,parami);num=pstmt.executeUpdate();,实现JDBC封装6-5,示例,23/38,实现类实现接口并继承数据库工具类,实现JDBC封装6-6,publicclassPetDaoMySQLImpl2extendsBaseDaoimplementsPetDao/更新宠物状态publicintupdate(Petpet)Stringsql=updatepetsetstatus=0whereid=?;Objectparam=pet.getId();intresult=this.exceuteUpdate(sql,param);returnresult;/省略实现PetDao的其他方法,此种封装JDBC的结构即为DAO模式,示例,24/38,什么是DAO,非常流行的数据访问模式DAO模式DataAccessObject(数据存取对象)位于业务逻辑和持久化数据之间实现对持久化数据的访问,类,DAO,数据表,DAO起着转换器的作用,把实体类转换为数据库中的记录,25/38,DAO模式的组成,DAO模式的组成部分DAO接口DAO实现类实体类数据库连接和关闭工具类优势隔离了数据访问代码和业务逻辑代码隔离了不同数据库实现,26/38,为什么使用Properties类,publicclassBaseDaoprivateStringdriver=com.mysql.jdbc.Driver;privateStringurl=jdbc:mysql:/localhost:3306/epet;privateStringuser=epetadmin;privateStringpassword=“0000;Connectionconn=null;publicConnectiongetConnection()if(conn=null)tryClass.forName(driver);conn=DriverManager.getConnection(url,user,password);catch(Exceptione)/省略代码returnconn;/返回连接对象,修改后需重新编译,让用户脱离程序本身修改相关的变量设置使用配置文件,27/38,properties配置文件,Java中的配置文件常为properties文件后缀为.properties格式是“键值”格式使用“”来注释,driver=com.mysql.jdbc.Driverurl=jdbc:mysql:/localhost:3306/epetusername=epetadminpassword=0000,键,值,28/38,读取配置文件,Java中提供了Properties类来读取配置文件,29/38,读取配置文件,publicclassBaseDao/省略变量定义代码staticinit();publicstaticvoidinit()Propertiesparams=newProperties();StringconfigFile=perties;InputStreamis=BaseDao.class.getClassLoader().getResourceAsStream(configFile);tryparams.load(is);catch(IOExceptione)/.driver=params.getProperty(driver);url=params.getProperty(url);user=params.getProperty(user);password=params.getProperty(password);/省略其他方法代码,配置文件路径,加载配置文件到输入流中,从输入流中读取属性列表,根据指定的键获取对应的值,静态代码块中调用,类加载时执行,30/38,小结,什么是DAO?DAO模式的作用是什么?DAO是由哪几部分组成的?JDBC操作中哪些地方建议读取配置文件?为什么?,提问,31/38,学员操作实现宠物主人登录的数据访问,需求说明创建数据库表主人表master(id,name,password)宠物种类表pet_type(id,name)宠物表pet(id,master_id,name,type_id,health,love,adopt_time,status)创建数据库工具类BaseDao定义实体类Master,与表master对应定义MasterDao接口创建M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年护理三基知识考试复习题库及答案
- 安丘市2025-2026学年八年级下学期语文月考模拟试卷
- 阿勒泰市2025-2026学年七年级下学期语文期末测试试卷
- 2025 年小升初石家庄市初一新生分班考试数学试卷(带答案解析)-(人教版)
- 2025 年小升初沧州市初一新生分班考试语文试卷(带答案解析)-(部编版)
- 北京2025年会计证《财经法规与职业道德》试题
- 社区网格实体化建设课件
- 安徽省合肥市经开区清华附中2024-2025学年八年级(下)期中物理试卷(含答案)
- 农村腌菜销售合同范本
- 瓷砖商品购销合同范本
- 物业小区多种经营创收方案及应用
- 事业单位人事管理制度培训
- 《建筑装饰设计收费》
- 新版外研版九年级英语上单词-默写纸-完整
- 设备预防性维修管理
- 经阴道后穹窿穿刺课件
- 去极端化自我剖析
- 船舶压载水取样与检测技术
- 人工流产后避孕服务规范
- 环境、社会与公司治理(ESG)
- 学校食堂食材配送服务方案(肉类、粮油米面、蔬菜水果类)(技术标)
评论
0/150
提交评论