第10章Java数据库编程课件

PPT
  • 阅读 36 次
  • 下载 0 次
  • 页数 38 页
  • 大小 196.237 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
第10章Java数据库编程课件
可在后台配置第一页与第二页中间广告代码
第10章Java数据库编程课件
可在后台配置第二页与第三页中间广告代码
第10章Java数据库编程课件
可在后台配置第三页与第四页中间广告代码
第10章Java数据库编程课件
第10章Java数据库编程课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 38
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】第10章Java数据库编程课件.ppt,共(38)页,196.237 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-45202.html

以下为本文档部分文字说明:

第10章Java数据库编程本章教学目标:理解JDBC访问数据库的原理了解JDBC驱动类型掌握JDBC访问数据库的步骤掌握利用JDBC技术对数据库的基本操作:查询、添加、删除、更新。掌握JDBCAPI的使用掌握预

处理语句的使用了解数据库元数据以及事务处理10.1JDBC概述10.1.1什么是JDBC为了使Java编写的程序在访问数据库时不依赖于具体的数据库,Java语言提供了专门用于操作数据库的API,即Java数据库编程接口JDBC(JavaDataBaseConnectivity),它由一组用J

ava语言编写的类和接口组成,是Java开发人员和数据库厂商达成的协议,也就是由Sun公司定义的一组接口,由数据库厂商来实现,并规定了Java开发人员访问数据库所使用的方法的规范。通过它可访问各类关系数据库。不同的数据

库需要不同的驱动程序。对不同数据库的访问差异主要体现在如何建立与数据库的连接之上。10.1.2JDBC驱动类型JDBC驱动程序包含以下四种类型:1.JDBC-ODBC桥2.本地API驱动3.网络协议驱动4.本地协议驱动10.1.3JDBC工作原理1

0.2访问数据库10.2.1访问数据库的准备工作1.设置MySQL驱动的类路径2.使用MySQL创建数据库和表10.2.2数据库访问步骤使用JDBC访问数据库的基本步骤一般如下:第一步:加载JDBC驱动程序;第二步:建立数据库连接;第三步

:创建Statement对象;第四步:执行SQL语句;第五步:处理返回结果;第六步:关闭创建的对象。10.2.2.1加载JDBC驱动程序Java加载数据库驱动程序的语句格式为:Class.forName(“JDBC驱动程序名称”);例如:(1)如果连接的是MySQL数据库,则加载驱动

的语句为:Class.forName(“com.mysql.jdbc.Driver”);(2)如果连接的是Oracle数据库,则加载驱动的语句为:Class.forName(“oracle.jdbc.

driver.OracleDriver”);(3)如果连接的是MicrosoftSQLServer数据库,则加载驱动的语句为:Class.forName(“com.Microsoft.jdbc.sqlserver.SQLServerDriver”);(4)对于JDBC-ODBC桥,则加载驱动的语句

为:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);10.2.2.2建立数据库连接建立与数据库连接的语句格式为:Connectioncn=DriverManager.getC

onnection(url,“username”,“password”);其中url指向要访问的数据库名;usename是数据库的用户名;password是数据库的密码。例如:(1)与MySQL数据库建立连接,连接语句为:Connecti

oncon=DriverManager.getConnection(“jdbc:mysql://localhost:3306/hrmanager”,“root”,”123”);(2)与Oracle数据库建立连接,连接语句为:ConnectionCon=DriverMan

ager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");(3)与MicrosoftSQLServer数据库建立连接,连接语句为:ConnectionCon=DriverMana

ger.getConnection(“jdbc:sqlserver://localhost:1433;databaseName=mydb”,“sa”,“123”);(4)采用JDBC-ODBC桥驱动连接Oracle数据库的语句为:ConnectionCon=DriverManager.ge

tConnection("jdbc:odbc:myscott","scott","tiger");10.2.2.3创建Statemet对象JDBC提供了Statement、PreparedStateme

nt(是Statement的子接口)和CallableStatement(是Statement和PreparedStatement的子接口)这3个接口来创建Statement对象。1.三种对象的区别(1)Statement对象:用于执行不带参数的、静态SQL语句并返回它所

生成的结果。(2)PreparedStatement对象:用于执行不带参数的或带参数的预编译SQL语句。SQL语句被预编译并存储在PreparedStatement对象中。其中参数用“?”作为占位符。(3)CallableStatement对象:用于执

行SQL存储过程的调用。2.三种对象的创建创建这三种对象都要通过调用Connection接口中的相关方法来实现。(1)创建Statement对象示例:Statementstmt=con.createStatement();(2)创

建PreparedStatement对象示例:StringinsertSql="INSERTINTOUSERVALUES(?,?,?)";PreparedStatementpstmt=conn.prepareSt

atement(insertSql);(3)创建CallableStatement对象示例:CallableStatementcstmt=conn.prepareCall("{callproc_name}");10.2.2.4执行SQL语句经过前三步后,可以说对数据库访问的准备工作基本完

成了,下面只需要确定到底要对数据库进行什么样的访问操作就可以了。对数据库的访问操作要由SQL语句来确定。Statement对象提供了三种执行SQL语句的方法:executeUpdate()、executeQuery(

)和execute(),使用哪一个方法由SQL语句所产生的内容来决定。其中:(1)executeQuery()方法:用于用于产生单个结果集的语句,例如SELECT语句。该方法返回一个ResultSet结果集对象,它包含了SQL的查询结果。(2)executeUpdate()方法

:用于执行INSERT、UPDATE或DELETE语句以及SQLDDL语句,如CREATETABLE和DROPTABLE。该方法的返回值是一个整数,指示受影响的行数(即更新计数)。对于CREATETABLE或DROPTABL

E等语句,executeUpdate()方法的返回值总为零。(3)execute()方法:用于执行返回多个结果集、多个更新计数或二者的组合。该方法比较特殊,一般是在用户不知道执行SQL语句后会产生什么结果或可能有多种类型的结果产生时才会使用

。10.2.2.5处理返回结果在JDBC中,ResultSet接口封装了Statement的executeQuery()方法查询数据库后返回的结果集,即执行某个SQL语句后满足条件的所有的行,并提供一系列“getXXX

()方法”来访问结果集中的数据。通过调用ResultSet对象的这些方法处理返回结果。10.2.2.6关闭创建的对象当数据库操作执行完毕或退出应用前,需将数据库访问过程中建立的对象按顺序关闭,防止系统资源浪费。关闭的次序是:先关闭结果集,再关闭Statement对象,最后

关闭连接。例如:rs.close();stmt.close();con.close();实例10-1利用JDBC技术编程访问user表,将表中的记录输出到控制台上。10.3数据库的基本操作JDBC提供了Statement、PreparedStatemen

t和CallableStatement这3个接口来创建Statement对象。其中:Statement接口用于执行不带参数的简单SQL语句。PreparedStatement接口是Statement接口的子接口,它继承了Stat

ement的所有功能。该对象可以处理一般的SQL语句,也可以处理带输入参数的SQL语句。该接口有两大特点:一是PreparedStatement对象中包含的SQL语句是预先编译好的,当需要多次执行同一条SQL语句时,利用PreparedStatement对象传送这条SQL语句

将大大提高执行效率;二是PreparedStatement对象所包含的SQL语句中允许含有一个或多个输入参数(参数用“?”占位符代替),提高了程序的灵活性。但是在执行带参数的SQL语句前,必须对“?”占位符进行赋值,PreparedStatement接

口中增添了大量的setXXX()方法,通过占位符的索引完成对输入参数的赋值,XXX根据不同的数据类型选择。对数据库的操作主要有两种:一是对数据表结构的操作;二是对数据表记录的操作,包括记录的增加、删除、修改和查询操作。10.3.1数据表结构的操作对数据

表结构的操作,包括创建数据表和删除数据表操作。实例10-2利用JDBC技术编程创建数据表student,创建成功后再将其删除。10.3.2数据表记录的操作对数据表记录的操作,包括记录的查询、增加、删除和修改操作。实例10-3利用JDBC技术编

程访问user表,完成以下操作:1.利用PreparedStatement将表中姓名为“张三”的记录输出到控制台上。2.利用PreparedStatement向表中添加一条记录。3.利用PreparedStatement修改刚添加的记录。4.利用PreparedStatement删除刚

添加的记录。10.4使用存储过程CallableStatement接口继承了Statement接口和PreparedStatement接口,它具有两者的特点,用于执行SQL存储过程。存储过程存储在数据库内,可以包含程序流、逻辑以及对数据库的查询,可以接收输入参数、输

出参数、返回一个或多个结果集以及返回值。由于存储过程也具有预编译机制,因此存储过程执行起来要比单个SQL语句快,并且由于将多个SQL语句座位一个单元处理,客户端发送到数据库的请求减少,可以有效减少网络拥塞情况的发生。1.创建CallableStatement对象方式1:Call

ableStatementcstmt=conn.prepareCall("{callproc_name}");方式2:CallableStatementcstmt=conn.prepareCall("{callproc_name(?,?)}");方式3:CallableStatementcstm

t=conn.prepareCall("{?=callproc_name(?,?)}");例如:在MySQL数据库中已经定义了一个名为add_sub存储过程,创建一个调用该存储过程的CallableStatement对象的语句为:CallableStatementcstmt=co

nn.prepareCall("{calladd_sub(?,?)}");2.输入参数的赋值CallableStatement接口提供了一系列setXXX()方法对输入参数进行赋值。3.输出参数的使用在执行存储过程之前,必须先对其中的所

有输出参数进行类型注册。注册方式如下:cstmt.registerOutParamenter(intindex,intsqlType);其中index参数为定义的参数占位符,sqlType参数为对应参数的类型,可以通过java.sql.Ty

pes的静态常量来指定,例如java.sql.Types.INTEGER、java.sql.Types.VARCHAR等。例如:将第一个输出参数注册为java.sql.Types.INTEGER的语句如下:cstmt.registerOutParamenter(1,java.

sql.Types.INTEGER);4.存储过程的执行执行存储过程时,执行结果可能为多个ResultSet对象,或多次修改记录,或两者都有。所以对CallableStatement一般调用execute()方法来执行SQL语句。实例10-4利用

JDBC技术编程调用存储过程。10.5数据库元数据操作10.5.1元数据概述元数据(MetaData),是一种描述数据的数据。数据库中存在大量的元数据,用于描述它们的功能和配置,通常包括数据库元数据、结果集元数据,就是有关数据库和表格结构的信息,如:数据库

中的表、表的列、表的索引、数据类型、对SQL的支持程度等信息。10.5.2数据库元数据每个数据库的元数据是不同的,我们可以通过DatabaseMetaData接口来获得关于数据库的信息,如:数据库中所有表格的列表、系统函数、关

键字、数据库产品名和数据库支持的JDBC驱动器名称等。DatabaseMetaData对象是通过Connection对象的getMetaData()方法获取的。实例10-5使用DatabaseMetaData获取当前数据库连接的相关信息。10.5.3结果集元数据使用ResultSe

tMetaData接口可以获取结果集的结构。如:结果集的列的数量、列的名字等。ResultSetMetaData对象可以通过ResultSet对象的getMetaData()方法获取。实例10-6

利用ResultSetMetaData获取当前结果集的相关信息。10.6事务操作10.6.1事务概述把数据库中一些相关操作组成一个独立的操作单元,称之为一个事务。当应用程序执行这个事务时,事务中的SQL语句要么全都执行,要么都不执行,这就是所谓的事务处理,这是保

证数据库中数据完整性和一致性的重要机制。事务分为两类:一类是已提交事务,即指成功执行完毕的事务;另一类是中止事务,即未能成功完成的事务。对中止事务造成的变更需要进行撤销处理,称为事务回滚。事务具有以下四个特性:原子性:事务中的全部操作在数据库中是不可分割的,要么全部完成,要么

均不执行。一致性:几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。隔离性:事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。持久性:对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。10.6.2JDB

C事务处理步骤步骤一:使用setAutoCommit()方法关闭自动提交模式。步骤二:使用commit()方法处理事务。步骤三:使用rollback()方法进行事务回滚。实例10-7利通过更新操作演示在JDBC

中的事务处理。10.6.3保存点操作JDBC还支持保存点操作,通过保存点,可以更好的控制事务回滚。实例10-8通过设置保存点,控制事务的部分回滚。10.7案例分析与实现(续)1.系统分析到目前为止,“企业人力资源管理系统”中的功能都已经实现了,并且汇报数据、考评数据也永久保存到

磁盘文件中了。但是目前几乎所有的计算机信息管理系统都在使用数据库进行数据的存储和查询操作,我们能否将汇报数据、考评数据以及员工信息永久保存到数据库中,实现数据的标准化管理,达到数据的共享。2.本次任务(

1)建立数据库“hrmanager”。(2)在数据库“hrmanager”中创建Employee、report和evaluation表。(3)向Employee表中插入员工信息。(4)在项目中添加MyS

QL数据库驱动包并导入。(5)实现实体类。(6)定义hrms.dao包,在该包中定义访问employee表的EmployeeDao类,该类实现与员工相关业务逻辑。在该类中定义以下方法:loginByEmpNoAndPassword()方法:

通过员工编号和密码实现员工登录功能。getAllEmployees()方法:获得所有员工信息功能。getEmployeeByEmpNo()方法:通过员工编号获得员工信息功能。modifyPassword()方法:员工修改密码功能。modifyEmpLeve

l()方法:管理员修改员工级别功能。(7)在hrms.dao包中定义访问report表的ReportDao类,该类实现与汇报相关业务逻辑。在该类中定义以下方法:addReport()方法:普通员工添加汇报功能。g

etReports()方法:部门经理查看汇报功能。(8)在hrms.dao包中定义访问evaluation表的EvaluationDao类,该类实现与考评相关业务逻辑。在该类中定义以下方法:addEvaluation()方法

:部门经理添加考评功能。getEvaluations()方法:普通员工查看考评功能。(9)修改Employee类中modifyPassword()方法,实现数据库中密码的修改。(10)修改Staff类中的addReport()方法和displayEvaluations()方法,

实现数据库中汇报信息的添加和考评信息的查询。(11)修改Manager类中的addEvaluation()方法和displayReports()方法,实现数据库中考评信息的添加和汇报信息的查询。(12)修改Ad

min类中的modifyEmployeeLevel()方法和displayEmployeeInfo()方法,实现数据库中员工级别的修改和所有员工信息的查询。(13)修改Menu类中相关菜单。(14)修改StartM

enu类,实现系统登录功能。(15)修改Staff类、Manager类、Admin类中的doWork()方法。3.代码实现:见教材谢谢!感谢聆听

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?