Java程序设计pp9教学课件.ppt

上传人:春哥&#****71; 文档编号:90589663 上传时间:2023-05-16 格式:PPT 页数:35 大小:3.64MB
返回 下载 相关 举报
Java程序设计pp9教学课件.ppt_第1页
第1页 / 共35页
Java程序设计pp9教学课件.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《Java程序设计pp9教学课件.ppt》由会员分享,可在线阅读,更多相关《Java程序设计pp9教学课件.ppt(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Java程序设计pp9教学课件Java程序设计目录目录第 9 章JDBC与数据库访问9.1 认识JDBC9.2 访问数据库使用的类和接口9.3 操作数据库的步骤9.4 常用的数据库操作9.1 认识JDBC利用JDBC可以很容易地在各种关系数据库上执行SQL语句。可以这样理解,有了JDBC,不需要专门为访问某个品牌的数据库产品写一个程序,只需用JDBC API写一个程序,就可以在所有数据库产品上执行SQL语句。同时,将Java语言与JDBC结合起来能使程序员不必为不同的平台编写不同的应用程序,只需写一次程序就可以让它在任意平台上运行,这也是Java语言“编写一次,处处运行”的优势所在。Java数

2、据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言则是接口模型。作为API,JDBC 为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供标准方法。JDBC使用已有的SQL标准并支持与其他数据库连接的标准,如ODBC之间的桥接。JDBC实现了所有面向标准的目标并具有简单、严格类型定义且高性能实现的接口。9.1 认识JDBC9.1.1 JDBC的基本原理JDBC由两部分组成:一部分是供程序员调用的API,另一部分是需要数据库厂商实现的接口(service provider interfa

3、ce,SPI),即驱动程序。对于Java程序员来说,不可能知道某种数据库应该如何调用,或者需要用其他技术语言编写一个接口程序,这是很麻烦的。另一方面,JDBC也为程序员提供了一系列Java API调用接口,只要数据库厂商提供数据库的JDBC驱动程序,程序员就可以访问数据库了。第9章JDBC与数据库访问Java程序设计可以将上述内容总结如下:JDBC采用了一种驱动模式的设计,提供了两套接口,即开发者使用的API和数据库厂商使用的SPI,充分体现了面向接口编程的好处。9.1 认识JDBC9.1.2 JDBC驱动程序的类型1)JDBC ODBC桥接的ODBC驱动程序JavaSoft桥产品利用ODBC

4、驱动程序提供JDBC访问。需要特别说明的是,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。这种类型的驱动程序最适合于企业网,或用Java语言编写的三层结构的应用程序服务器。9.1 认识JDBC2)用Java编写的JDBC本地API驱动程序这种类型的驱动程序把客户机这种类型的驱动程序把客户机API上的上的JDBC调调用转换为对用转换为对Oracle、Sybase、Informix、DB2或其或其他他DBMS的调用。需要注意的是,与桥驱动程序相的调用。需要注意的是,与桥驱动程序相同,这种驱动程序要求将某些二进制代码加载到每同,这种驱动程序要求将某些

5、二进制代码加载到每台客户机上。台客户机上。9.1 认识JDBC3)JDBC网络的纯Java驱动程序这种驱动程序将JDBC转换为与DBMS无关的网络协议,这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适用于Intranet的产品。为了使这些产品也支持Internet访问,它们必须符合Web提出的安全性、防火墙访问等方面的额外要求。9.1 认识JDBC4)本地协议的纯Java驱动程序这种类型的驱动程序将JDBC调用直接转换为D

6、BMS所使用的网络协议。这将允许从客户机上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。一般地,第3类和第4类驱动程序是使用JDBC访问数据库的主要方法。9.1 认识JDBC9.1.3 使用JDBC ODBC桥接方式连接数据库1)创建ODBC数据源使用操作系统中的使用操作系统中的ODBC系统。在系统。在Windows XP中进行如下操作:执行中进行如下操作:执行“开始开始”“控制面板控制面板”命令,打开命令,打开“控制面板控制面板”窗口,单击窗口,单击“性能和维性能和维护护”链接,打开链接,打开“性能和维护性能和维护”窗口,单击窗口,单击“管理管理工具工具”链接,打开链

7、接,打开“管理工具管理工具”窗口,双击窗口,双击“数据数据源(源(ODBC)”选项,即可弹出选项,即可弹出“ODBC数据源管理数据源管理器器”对话框,如图对话框,如图9-1所示,在对话框中按照向导所示,在对话框中按照向导提示添加提示添加ODBC数据源即可。数据源即可。9.1 认识JDBC9.1 认识JDBC2)建立JDBCODBC桥接器JDBC使用java.lang包中的Class类建立JDBCODBC桥接器,即通过调用Class类的静态方法forName()加载sun.jdbc.odbc包中的JdbcOdbcDriver类,从而建立JDBCODBC桥接器,具体代码如下。tryClass.fo

8、rName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e)System.out.println(e);9.1 认识JDBC3)连接数据库在连接数据库的代码中不会出现数据库的名字,而使用数据源的名字。可以使用 java.sql 包中的Connection类声明一个对象,再调用类DriverManager的静态方法getConnection()来创建连接对象,代码如下。tryConnection con=DriverManager.getConnection(jdbc:odbc:NameOfDataSource,login

9、Name,password);catch(SQLException e)System.out.println(e);9.1 认识JDBC9.1.4 使用纯JDBC连接MySQL数据库1)加载纯Java数据库驱动程序目前,很多数据库厂商都提供了自己相应的纯Java数据库驱动程序。当使用纯Java数据库驱动程序访问数据库时,需要保证连接数据库应用程序的计算机上安装有相应数据库的驱动程序。9.1 认识JDBC2)连接数据库假设应用程序与假设应用程序与MySQL服务器在同一台计算机上,那么服务器在同一台计算机上,那么应用程序与数据库建立连接的代码如下。应用程序与数据库建立连接的代码如下。tryStri

10、ng url=jdbc:mysql:/ip/databaseName;Connection con=DriverManager.getConnection(url,userName,password);catch(SQLException e)System.out.println(e);9.2 访问数据库使用的类和接口9.2.1 管理数据库驱动类DriverManagerDriverManager用于管理一组JDBC驱动程序的基本服务。可以认为DriverManager是JDBC的管理层,作用于用户与驱动程序之间,同时跟踪可用的驱动程序,并在数据库与相应的驱动程序之间建立连接,还可以处理驱动程

11、序登录时间限制、跟踪消息的显示等。通过DriverManager,应用程序可以不再使用forName()方法显式地加载JDBC驱动程序。在调用getConnection()方法时,DriverManager会试着从初始化时加载的那些驱动程序以及使用与当前程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。对于简单的应用程序,一般只需要调用getConnection()方法即可,因为该方法将建立与数据库的连接。9.2 访问数据库使用的类和接口9.2.2 数据库连接接口ConnectionConnection是与特定数据库的连接,其作用是连接上下文执行SQL语句并返回结果。DriverM

12、anager的getConnection()方法建立在JDBC URL中定义的数据库连接上,其使用代码如下。Connection con=DriverManager.getConnection(URL,login,password);其中,参数URL是一个字符串,表示要连接的数据库,即数据库的具体位置。不同类型的JDBC驱动程序所使用的URL也不相同。JDBC URL的语法和结构如下。jdbc:9.2 访问数据库使用的类和接口9.2.3 发送SQL语句接口StatementStatement用于执行静态SQL语句并返回它所生成结果的对象。一般情况下,使用Connection类的createSt

13、atement()方法可以得到Statement实例。JDBC支持以下3种Statement对象。(3)CallableStatement。该对象用于执行对数据库现有存储过程的调用。(1)Statement。该对象用于执行不带参数的简单SQL语句。(2)PreparedStatement。该对象用于执行带或不带参数的预编译SQL语句。9.2 访问数据库使用的类和接口9.2.3 发送SQL语句接口Statement(1)execute()。该方法执行SQL语句,返回是否有结果集。(2)executeQuery()。该方法运行查询语句,返回ResultSet结果集。(3)executeUpdate

14、()。该方法运行更新操作,返回更新的行数。常用的Statement方法如下。9.2 访问数据库使用的类和接口9.2.4 可执行动态SQL语句的接口PreparedStatementStatement发送完整的SQL语句到数据库,被发送的SQL语句并不是直接执行的,而是由数据库先编译再运行的。而PreparedStatement是先发送带参数的SQL语句,再发送一组参数值。对于同构的SQL语句,PreparedStatement的效率要比Statement高;如果SQL语句是异构的,则两者的运行效率相差不多。所谓SQL语句是同构的,是指两个SQL语句在可编译部分是相同的,只有参数值不同;而异构则

15、是指整个SQL语句的格式都不同。9.2 访问数据库使用的类和接口9.2.5 查询结果集接口ResultSetStatement执行SQL语句后返回ResultSet结果集。ResultSet提供了检索不同类型字段的方法,如下所示。(1)getString()。该方法用于获得数据库中varChar、char等类型的数据。(2)getFloat()。该方法用于获得数据库中float类型的对象。(3)getDate()。该方法用于获得数据库中Date类型的数据。(4)getBoolean()。该方法用于获得数据库中boolean类型的数据。(5)getObject()。该方法在SQL中无对应类型,用

16、于获得序列化对象。9.3 操作数据库的步骤通过JDBC操作数据库的步骤如下。(1)加载JDBC驱动程序。(2)创建数据库连接。(3)执行SQL语句。(4)处理结果集。(5)关闭连接。9.3 操作数据库的步骤以上步骤可由图9-2表示。9.3 操作数据库的步骤9.3.1 加载JDBC驱动程序在DriverManager类中包含了一系列Driver类,这些Driver类都是通过调用方法registerDriver()对自己进行注册的。所有Driver类都必须包含一个静态部分用于创建该类的实例,然后在加载该实例时对DriverManager类进行注册。在正常情况下,不需要直接调用registerDri

17、ver()方法,而是在加载驱动程序时由驱动程序自动调用。在程序中加载Driver类,然后自动在DriverManager中注册的方式有以下两种。(1)通过调用方法forName()显式地加载驱动程序类。(2)将驱动程序添加到java.lang.System的属性jdbc.drivers中。9.3 操作数据库的步骤9.3.2 创建数据库连接加载Driver类并在DriverManager类中注册后,即可用来与数据库建立连接。当调用getConnection()方法发出连接请求时,DriverManager将检查每个驱动程序,查看是否可以建立连接。在实际应用中可能会遇到这样的情况:连接一个指定的远

18、程数据库时,既可以采用JDBCODBC桥驱动程序,也可以采用JDBC连接到通用网络协议驱动程序或数据库厂商提供的驱动程序。在这种情况下,测试驱动程序的顺序是非常重要的,因为DriverManager将使用它所找到的第一个可以成功连接到给定URL的驱动程序。DriverManager 会按照注册的顺序使用每个驱动程序(jdbc.drivers中列出的驱动程序总是先被注册),那些代码不可信任的驱动程序会被自动跳过。9.3 操作数据库的步骤DriverManager会轮流在每个驱动程序上调用方法getConnection(),并向它们传递该方法中的URL来对驱动程序进行测试,然后连接第一个认出该UR

19、L的驱动程序。这种方法的执行效率并不高,不过由于程序不可能同时加载数十个驱动程序,所以每次连接只需要几个过程调用和字符串比较就可以完成。9.3 操作数据库的步骤9.3.3 执行SQL语句建立与数据库的连接并获得Connection对象后,就可以使用该对象发送SQL语句进行进一步的数据库操作。Java中的所有SQL语句都是由Statement对象发送的。如果发送的SQL语句运行后产生结果集,则Statement对象将结果集返回给一个ResultSet对象。因为Statement只是接口,没有构造函数,所以必须通过Connection对象进行创建。可以通过以下3种方法创建Statement。(1)

20、createStatement()。该方法用于创建基本的Statement对象。(2)prepareStatement(String sql)。该方法根据传入的sql语句创建预编译的Statement对象。(3)prepareCall(String sql)。该方法根据传入的sql语句创建CallableStatement对象。9.3 操作数据库的步骤9.3.4 处理结果集JDBC通过ResultSet对象接收和管理结果集,一个ResultSet对象包含了执行select语句后返回的结果集,而且还指定了对结果集中数据的访问。结果集类似于数据库中的表,因此,需要一个指针逐行读取数据,这个指针称为

21、游标。在创建的ResultSet对象中,其游标指向第一行数据前,先调用next()方法才能读取到第一行数据,以后每调用一次next()方法,才可以获取下一行数据。next()方法返回boolean类型的值,如果返回true,表示结果集中仍然有查询结果;如果返回false,则表示当前ResultSet对象中已经没有可以读取的查询结果了。9.3 操作数据库的步骤由JDBC执行的默认类型转换如表9-1所示。9.3 操作数据库的步骤9.3.5 关闭连接JDBC连接池提供了数目有限的连接,如果数量不够,就需要长时间等待。为了确保JDBC资源不会在出现异常或错误等情况下被不正常关闭,应该在使用完JDBC资

22、源之后关闭且释放它们。不正常关闭JDBC连接会导致等待回收无效的JDBC连接。只有正常关闭和释放JDBC连接,才可以快速重用JDBC资源,从而使性能得到改善。关闭连接的代码如下。/conn为Connection对象if(conn!=null)conn.close();9.4 常用的数据库操作9.4.1 增加数据增加数据的SQL语句的形式如下。insert into 表名称 values 字段1值,字段2值,如果一个表有多个字段,可以把字段名与字段值用逗号隔开。下面的代码演示了如何在学生信息表中增加新的学生数据,并为学号和姓名字段赋值。String sqlAdd=insert into stud

23、ent values(201109006,李明);state.executeUpdate(sqlAdd);/state为Statement对象9.4 常用的数据库操作9.4.2 删除数据删除数据的删除数据的SQL语句的形式如下。语句的形式如下。delete from 表名称表名称 where 删除条件删除条件下面的代码演示了如何在学生信息表中删除学号为下面的代码演示了如何在学生信息表中删除学号为201109006的学生信息。的学生信息。String sqlDel=delete from student where id=201109006;state.executeUpdate(sqlDel)

24、;9.4 常用的数据库操作9.4.3 修改数据修改数据的SQL语句的形式如下。update 表名称 set 字段1名=字段1值 where 条件同样地,如果需要同时修改表中的多个字段,可以把字段名和字段值用逗号隔开。下面的代码演示了如何在学生信息表中将学号为201109007的学生姓名修改为“张成功”。String sql=update student set name=张成功 where id=201109007;State.executeUpdate(sql);9.4 常用的数据库操作9.4.4 查询数据查询数据的SQL语句的形式如下。select 要查询的内容 from 表名称 wher

25、e 查询条件下面的代码演示了如何在学生信息表中查询学号为201109007的学生信息,如果查找到,则输出该学生的学号和姓名。String sql=select*from student where id=201109007;PreparedStatement pst=con.prepareStatement(sql);ResultSet rs=pst.executeQuery();while(rs.next())String id=rs.getString(1);String name=rs.getString(2);System.out.print(id:+id+name:+name);谢谢观看!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com