《Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch14》由会员分享,可在线阅读,更多相关《Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch14(104页珍藏版)》请在金锄头文库上搜索。
1、第14章 Java数据库技术简介,第14章 Java数据库技术简介,在计算机信息管理系统中,处理各种数据资料的方式是通过使用数据库完成的。 数据库是长期存储在计算机内、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述、存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可以为各种用户共享。 目前使用的数据库主要是主要是关系数据库,通过应用程序来访问这些数据库。,14.1 JDBC概述,在Java中对数据库的访问主要是通过JDBC进行的。JDBC是Java数据库连接技术的简称,它是一种用于执行SQL语句的Java API,由一组用Java编程语言编写的类和接口组成。 JDBC为数据库
2、开发人员提供了一组标准的API,使他们能够用纯Java API来编写数据库应用程序,使得程序员无须对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。,14.1 JDBC概述,通过JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。 简单地说,JDBC可做三件事: (1) 与一个数据库建立连接; (2) .向数据库发送SQL语句; (3) .处理数据库返回的结果。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 JDBC的核心是提供了一个Java API。Java API是定义在java.sql包中的,其中包括了所有的JDBC的类、接口和方法,主要
3、的类和接口如表14-1所示。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 1. java.sql.DriverManager类 DriverManager是java.sql包中用于数据库驱动程序管理的类,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。 DriverManager类直接继承自java.lang.object,其常用的方法如表14-2所示。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 2. java.sql.Connection接口 Connection接口用来表示数据库连接的对象,对数据库的一切操作都是在
4、这个连接的基础上进行的。Connection对象由DriverManager类的getConnection方法建立,其格式如下: Conneetion con=DriverManager.getConneetion(URL); Connection类的主要方法如表14-3所示。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 3. java.sql.Statement接口 Statement用于在已经建立的连接的基础上向数据库发送SQL语句的对象。它只是一个接口的定义,其中包括了执行SQL语句和获取返回结果的方法。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 3
5、. java.sql.Statement接口 有3种Statement对象: Statement, PreparedStatement(继承自Statement) CallableStatement (继承自PreparedStatement) 它们都作为在给定连接上执行SQL语句的容器,每个都专用于发送特定类型的SQL语句: (1) Statement对象用于执行不带参数的简单SQL语句;,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 3. java.sql.Statement接口 有3种Statement对象: Statement, PreparedStatement(继承
6、自Statement) CallableStatement (继承自PreparedStatement) (2) PreparedStatement对象用于执行带或不带IN参数的预编译SQL语句; (3) Ca11ableStatement对象用于执行对数据库已存储过程的调用。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 3. java.sql.Statement接口 Statement接口提供了执行语句和获取结果的基本方法;PreparedStatement接口添加了处理IN参数的方法;而Ca11ableStatement添加了处理OUT参数的方法。主要介绍Statemen
7、t对象。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 3. java.sql.Statement接口 创建一个Statement对象的方法很简单,只需调用Connection的方法createStatement就可以了一般形式如下: Statement stmt=con.createStatement(); Statemen接口定义中包括的常用方法如表14-4所示。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 4. java.sql.ResultSet接口 结果集ResultSet用来暂时存放数据库查询操作获得的结果。它的对象一般由Statement类及其子
8、类通过方法execute或executeQuery执行SQL查询语句后产生,包含这些语句的执行结果。ResultSet的通常形式类似于数据库中的表,包含符合查询要求的所有行。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 4. java.sql.ResultSet接口 由于一个结果集可能包含多行数据,为读取方便,使用指针(cursor)来标记当前行,指针的初始位置指向第一行之前。ResultSet接口定义中包括的主要方法如表14-5所示,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 4. java.sql.ResultSet接口 从表14-5中可以看出,Resu
9、ltSet类不仅提供了一套用于访问数据的get方法,还提供了很多移动指针的方法。 cursor是ResultSet维护的指向当前数据行的指针。最初它位于第一行之前,因此第一次访问结果集时通常调用next方法将指针置于第一行上,使它成为当前行。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 4. java.sql.ResultSet接口 随后每次调用next指针向下移动一行。它包含了符合SQL语句中条件的所有行,并且它提供了一套get方法对这些行中的数据进行访问。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 4. java.sql.ResultSet接口 结果集
10、ResultSet用来暂时存放数据库查询操作获得的结果,一般形式如下: ResultSet rs = stmt.executeQuery(query SQL); while(rs.next() / 处理每一结果行 ,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 4. java.sql.ResultSet接口 注意:在处理每一结果行时,ResultSet中提供了一组getXXX()方法,用于设置语句的参数,其声明如下String getXXX(int columnIndex),每个getXXX()方法对应一种Java语言中的类型,用户使用时必须保证你所用的方法对应所对应的类型与参
11、数。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 5. java.sql.SQLException类 SQLException类是java.lang.Exception类的子类,提供在数据库操作过程中的错误信息的处理。 在进行数据库连接和对数据库操作的过程中,都有可能产生异常,如连接失败时就产生SQLException异常,成功时产生一些警告信息。,14.1 JDBC概述,14.1.1 JDBC的主要类和接口 5. java.sql.SQLException类 在JDBC中经常遇到的异常是SQLException,因此在进行数据库连接时应注意检查这些警告信息,以便寻找错误,同
12、时应注意捕获异常及做相应的处理。 SQLException类定义中包括的方法如表所示,14.1 JDBC概述,14.1.2 JDBC驱动程序 1. 驱动程序的类型 使用JDBC API和数据库建立连接之前,首先必须要有连接到该种数据库的JDBC驱动程序。 JDBC驱动程序负责特定的数据库与JDBC接口之间的数据转换,它是一个中间层,把Java方法调用翻译成特定数据库的API调用,然后用来操作数据库。,14.1 JDBC概述,14.1.2 JDBC驱动程序 1. 驱动程序的类型 目前的JDBC驱动程序大致可以下四种类型: (1) JDBC-ODBC桥加ODBC驱动程序: JDBC-ODBC桥加O
13、DBC驱动程序是一种桥接技术,实现了利用ODBC驱动程序提供JDBC访问。注意:必须将ODBC管理器和相应ODBC驱动程序加载到使用该驱动程序的每个客户机上。,14.1 JDBC概述,14.1.2 JDBC驱动程序 1. 驱动程序的类型 目前的JDBC驱动程序大致可以下四种类型: (2) 本地API一部分用Java来编写的驱动程序: 本地API一部分用Java来编写的驱动程序是把客户机API像上的JDBC调用转换为Oracle,Sybase,Infornux,DB2或其他DBMS的调用。同样,像桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机。,14.1 JDBC概述,1
14、4.1.2 JDBC驱动程序 1. 驱动程序的类型 目前的JDBC驱动程序大致可以下四种类型: (3) JDBC网络纯Java驱动程序: JDBC网络纯Java驱动程序是将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上,所用的具体协议取决于提供者。,14.1 JDBC概述,14.1.2 JDBC驱动程序 1. 驱动程序的类型 目前的JDBC驱动程序大致可以下四种类型: (4) 本地协议纯Java驱动程序: 本地协议纯Java驱动程序是将JDBC调用直接转换为DBMS所使用的网络协议
15、。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。,14.1 JDBC概述,14.1.2 JDBC驱动程序 2. 驱动程序的加载 驱动程序的加载只需一行代码。例如,装载类型(1)的JDBC-ODBC桥驱动程序,可以用下列代码: Class.forName(“sunjdbc.odbc.JdbcOdbcDriver“); 其中,JdbcOdbcDriver为JDBC-ODBC桥驱动程序的类名,sun.jdbc.odbc为该类所在的包。,14.1 JDBC概述,14.1.3 JDBC URL的标准语法 JDBC URL是JDBC用来标识数据库的方法,JDB
16、C驱动程序管理器根据JDBC URL选择正确的驱动程序,由驱动程序识别该数据库并与之建立连接。 JDBC URL的标准语法由3部分组成,各部分间用冒号分隔: jdbc:,14.1 JDBC概述,14.1.3 JDBC URL的标准语法 JDBC URL的标准语法由3部分组成,各部分间用冒号分隔: jdbc: 三个部分可分解如下: (1) jdbc协议JDBC URL中的协议总是jdbc,14.1 JDBC概述,14.1.3 JDBC URL的标准语法 JDBC URL的标准语法由3部分组成,各部分间用冒号分隔: jdbc: 三个部分可分解如下: (2) 为驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称。例如,子协议名是“odbc“.该名称是为用于指定ODBC数据资源名称的URL使用的。,14.1 JDBC概述,14.1.3 JDBC URL的标准语法 JDBC URL的标准语法由3部分组成,各部分间用冒号分隔: jdbc: 三个部分可分解如下: (3) 是标识数据库的,子名称可以依不同的子协议而变化。它可以有子名称的子名称,使用子名称的目的是为数