面向对象的程序设计-Java张白一第三版第16章.ppt
《面向对象的程序设计-Java张白一第三版第16章.ppt》由会员分享,可在线阅读,更多相关《面向对象的程序设计-Java张白一第三版第16章.ppt(70页珍藏版)》请在三一办公上搜索。
1、第16章 JDBC连接数据库,16.1 关系型数据库与SQL 16.2 使用JDBC连接数据库 16.3 JDBC编程实例,16.1 关系型数据库与SQLSQL(Structured Query Language,结构化查询语言)作为关系型数据库管理系统的标准语言,其主要功能是同各种数据库建立联系并进行操作。SQL最初是由IBM公司提出的,其主要功能是对IBM自行开发的关系型数据库进行操作。由于SQL结构性好,易学且功能完善,于是1987年美国国家标准局(ANSI)和国际标准化组织(ISO)以IBM的SQL语言为蓝本,制定并公布了SQL-89标准。此后,ANSI不断改进和完善SQL标准,于19
2、92年又公布了SQL-92标准。虽然目前数据库的种类繁多,如SQL Server、Access、Visual FoxPro、,Oracle、Sybase和MySQL等,并且不同的数据库有着不同的结构和数据存放方式,但是它们基本上都支持SQL标准,我们可以通过SQL来存取和操作不同数据库的数据。,16.1.1 关系型数据库的基本概念数据库技术是计算机科学与技术领域的一个重要分支,其理论和概念比较复杂,这里扼要介绍一下本章中涉及到的数据库的有关概念。首先,顾名思义,数据库(Database)是存储数据的仓库,用专业术语来说它是指长期存储在计算机内的、有组织的、可共享的数据集合。在关系型数据库中,数
3、据以记录(Record)和字段(Field)的形式存储在数据表(Table)中,若干个数据表又构成一个数据库。数据表是关系数据库的一种基本数据结构。如图16.1所示,数据表在概念上很像我们日常所使用的二维表格(关系代数中称为关系)。数据表中的一行称为一条记录,一列称为一个字段,字段有字段名与字段值之分。字段名是表的结构部分,由它确定该列的名称、数据类型和限制条件。字段值是该列中的一个具体值,它与第2章介绍的变量名与变量值的概念类似。,图16.1 学生数据库的组成及相关名词,SQL的操作对象主要是数据表。依照SQL命令操作关系型数据库的不同功能,可将SQL命令分成数据定义语言(Data Defi
4、nition Language,DDL)、数据操纵语言(Data Manipulation Language,DML)、数据查询语言(Data Query Language,DQL)和数据控制语言(Data Control Language,DCL)四大类。这里只介绍前三类。,16.1.2 数据定义语言数据定义语言提供对数据库及其数据表的创建、修改、删除等操作。属于数据定义语言的命令有CREATE、ALTER和DROP。1创建数据表在SQL中,使用CREATE TABLE语句创建新的数据库表格。CREATE TABLE语句的使用格式如下:CREATE TABLE 表名(字段名l 数据类型限制条
5、件,字段名2 数据类型限制条件,字段名n 数据类型限制条件),说明:(1)表名是指存放数据的表格名称;字段名是指表格中某一列的名称,通常也称为列名。表名和字段名都应遵守标识符命名规则。(2)数据类型用来设定某一个具体列中数据的类型。(3)所谓限制条件,就是当输入此列数据时必须遵守的规则。这通常由系统给定的关键字来说明。例如,使用UNIQUE关键字限定本列的值不能重复;NOT NULL用来规定该列的值不能为空;PRIMARYKEY表明该列为该表的主键(也称主码),它既限定该列的值不能重复,也限定该列的值不能为空。(4)表示可选项(下同)。例如,CREATE语句中的限制条件便是一个可选项。,2修改
6、数据表修改数据表包括向表中添加字段和删除字段。这两个操作都使用ALTER命令,但其中的关键字有所不同。添加字段使用的格式如下:ALTER TABLE 表名 ADD 字段名 数据类型 限制条件删除字段使用的格式如下:ALTER TABLE 表名 DROP 字段名3删除数据表在SQL中使用DROP TABLE语句删除某个表格及表格中的所有记录,其使用格式如下:DROP TABLE 表名,16.1.3 数据操纵语言数据操纵语言用来维护数据库的内容。属于数据操纵语言的命令有INSERT、DELETE和UPDATE。1向数据表中插入数据SQL使用INSERT语句向数据库表格中插入或添加新的数据行,其格式
7、如下:INSERT INTO 表名(字段名l,字段名n)VALUES(值l,值n)说明:命令行中的“值”表示对应字段的插入值。在使用时要注意字段名的个数与值的个数要严格对应,二者的数据类型也应该一一对应,否则就会出现错误。,2数据更新语句SQL使用UPDATE语句更新或修改满足规定条件的现有记录,使用格式如下:UPDATE 表名 SET 字段名l 新值l,字段名2 新值2 WHERE 条件说明:关键字WHERE引出更新时应满足的条件,即满足此条件的字段值将被更新。在WHERE从句中可以使用所有的关系运算符和逻辑运算符。,3删除记录语句SQL使用DELETE语句删除数据库表格中的行或记录,其使用
8、格式如下:DELETE FROM 表名 WHERE 条件说明:通常情况下,由关键字WHERE引出删除时应满足的条件,即满足此条件的记录将被删除。如果省略WHERE子句,则删除当前记录。,16.1.4 数据查询语言数据库查询是数据库的核心操作。SQL提供了SELECT语句进行数据库的查询,并以数据表的形式返回符合用户查询要求的结果数据。SELECT语句具有丰富的功能和灵活的使用方式,其一般的语法格式如下:SELECT DISTINCT 字段名1,字段名2,FROM 表名 WHERE 条件,其中:DISTINCT表示不输出重复值,即当查询结果中有多条记录具有相同的值时,只返回满足条件的第一条记录值
9、;字段名用来决定哪些字段将作为查询结果返回。用户可以按照自己的需要返回数据表中的任意字段,也可以使用通配符“*”来表示查询结果中包含所有字段。,16.2 使用JDBC连接数据库JDBC(Java Data Base Connectivity)是Java程序连接和存取数据库的应用程序接口(API)。此接口是Java核心API的一部分。JDBC由一群类和接口组成,它支持ANSI SQL-92标准,因此,通过调用这些类和接口所提供的成员方法,我们可以方便地连接各种不同的数据库,进而使用标准的SQL命令对数据库进行查询、插入、删除、更新等操作。,16.2.1 JDBC结构用JDBC连接数据库实现了与平
10、台无关的客户机/服务器的数据库应用。由于JDBC是针对“与平台无关”设计的,因此只要在Java数据库应用程序中指定使用某个数据库的JDBC驱动程序,就可以连接并存取指定的数据库了。而且,当要连接几个不同的数据库时,只需修改程序中的JDBC驱动程序,无需对其他的程序代码做任何改动。JDBC的基本结构由Java程序、JDBC管理器、驱动程序和数据库四部分组成,如图16.2所示。在这四部分中,根据数据库的不同,相应的驱动程序又可分为四种类型。,图16.2 JDBC驱动程序存取结构,1Java应用程序Java程序包括Java应用程序和小应用程序,主要功能是根据JDBC方法实现对数据库的访问和操作。完成
11、的主要任务有:请求与数据库建立连接,向数据库发送SQL请求,为结果集定义存储应用和数据类型,查询结果,处理错误,控制传输,提交及关闭连接等。2JDBC管理器JDBC管理器为我们提供了一个“驱动程序管理器”,它能够动态地管理和维护数据库查询所需要的所有驱动程序对象,实现Java程序与特定驱动程序的连接,从而体现JDBC的“与平台无关”这一特点。它完成的主要任务有:为特定数据库选择驱动程序,处理JDBC初始化调用,为每个驱动程序提供JDBC功能的入口,为JDBC调用执行参数等。,3驱动程序驱动程序处理JDBC方法,向特定数据库发送SQL请求,并为Java程序获取结果。在必要的时候,驱动程序可以翻译
12、或优化请求,使SQL请求符合DBMS支持的语言。驱动程序可以完成下列任务:建立与数据库的连接,向数据库发送请求,用户程序请求时执行翻译,将错误代码格式化成标准的JDBC错误代码等。,JDBC是独立于数据库管理系统的,而每个数据库系统均有自己的协议与客户机通信,因此,JDBC利用数据库驱动程序来使用这些数据库引擎。JDBC驱动程序由数据库软件商和第三方的软件商提供,因此,编程所使用的数据库系统不同,所需要的驱动程序也有所不同。4数据库这里的数据库是指Java程序需要访问的数据库及其数据库管理系统。,16.2.2 四类JDBC驱动程序尽管存在数据库语言标准SQL-92,但由于数据库技术发展的原因,
13、各公司开发的SQL也存在着一定的差异。因此,当我们想要连接数据库并存取其中的数据时,选择适当类型的JDBC驱动程序是非常重要的。目前,JDBC驱动程序可细分为四种类型,如图16.2所示。不同类型的JDBC驱动程序有着不一样的特性和使用方法。下面将说明不同类型的JDBC驱动程序之间的差异。,类型1:JDBC-ODBC Bridge。这类驱动程序的特色是必须在计算机上事先安装好ODBC驱动程序,然后通过JDBC-ODBC Bridge的转换,把Java程序中使用的JDBC API转换成ODBC API,进而通过ODBC来存取数据库中的数据。类型2:JDBC-Native API Bridge。同类
14、型1一样,这类驱动程序也必须在计算机上事先安装好特定的驱动程序(类似ODBC),然后通过JDBC-Native API Bridge的转换,把Java程序中使用的JDBC API转换成Native API,进而存取数据库中的数据。,类型3:JDBC-Middleware。使用这类驱动程序时不需要在计算机上安装任何附加软件,但是必须在安装数据库管理系统的服务器端加装中介软件(Middleware),这个中介软件会负责所有存取数据库中的数据时必要的转换。类型4:Pure JDBC Driver。使用这类驱动程序时无需安装任何附加的软件(无论是计算机还是数据库服务器端),所有存取数据库中数据的操作都
15、直接由JDBC驱动程序来完成。,由以上的简单陈述可以知道,最佳的JDBC驱动程序类型是类型4,因为使用类型4的JDBC驱动程序不会增加任何额外的负担,而且类型4的JDBC驱动程序是由纯Java语言开发而成的,因此拥有最佳的兼容性。反观类型1和类型2的JDBC驱动程序,它们都必须事先安装其他附加的软件,若有30台计算机就必须安装30次附加软件,这将使Java数据库程序的兼容性大打折扣。使用类型3的JDBC驱动程序也是不错的选择,因为类型3的JDBC驱动程序也是由纯Java语言开发而成的,并且中介软件也仅需要在服务器上安装。因此,建议最好以类型3和类型4的JDBC驱动程序为主要选择,类型1和类型2
16、的JDBC驱动程序为次要选择。,16.2.3 JDBC编程要点在Java中使用数据库进行JDBC编程时,Java程序中通常应包含下述几部分内容。(1)在程序的首部用import语句将java.sql包引入程序。使用语句:import java.sql.*;(2)使用Class.forName()方法加载相应数据库的JDBC驱动程序。若以加载JDBC-ODBC Bridge为例,则相应的语句格式如下:);,(3)定义JDBC的URL对象。例如:String conURL=“jdbc:odbc:TestDB”;其中,TestDB是我们设置的要创建的数据源。(4)连接数据库。例如:Connectio
17、n s=DriverManager.getConnection(conURL);(5)使用SQL语句对数据库进行操作。(6)使用close()方法解除Java与数据库的连接并关闭数据库。例如:s.close();,16.2.4 常用的JDBC类与方法JDBC API提供的类和接口在java.sql包中定义。JDBC API所包含的类和接口非常多,这里只介绍几个常用的类和接口及它们的成员方法。1DriverManage类类是JDBC的管理器,负责管理JDBC驱动程序,跟踪可用的驱动程序并在数据库和相应驱动程序之间建立连接。如果要使用JDBC驱动程序,必须加载JDBC驱动程序并向DriverMan
18、age注册后才能使用。加载和注册驱动程序可以使用Class.forName()方法来完成。此外,类还处理如驱动程序登录时间限制及登录和跟踪消息的显示等事务。,类提供的常用成员方法如下:(1)static Connection getConnection(String url)方法。这个方法的作用是使用指定的数据库URL创建一个连接,使DriverManager从注册的JDBC驱动程序中选择一个适当的驱动程序。(2)static Connection getConnection(String url,Properties info)方法。这个方法使用指定的数据库URL和相关信息(用户名、用户密码
19、等属性列表)来创建一个连接,使DriverManager从注册的JDBC驱动程序中选择一个适当的驱动程序。,(3)static Connection getConnection(String url,String user,String password)方法。它使用指定的数据库URL、用户名和用户密码创建一个连接,使DriverManager从注册的JDBC驱动程序中选择一个适当的驱动程序。(4)static Driver getDriver(String url)方法。它定位在给定URL下的驱动程序,让DriverManager从注册的JDBC驱动程序选择一个适当的驱动程序。(5)stat
20、ic void deregisterDriver(Driver driver)方法。这个方法的作用是从DriverManager列表中删除指定的驱动程序。,(6)static int getLoginTimeout()方法。它用来获取连接数据库时驱动程序可以等待的最大时间,以秒为单位。(7)static void println(String message)方法。它用于将一条消息打印到当前 JDBC 日志流中。2Connection接口接口负责建立与指定数据库的连接。在连接上下文中执行 SQL 语句并返回结果。Connection接口提供的常用成员方法如下:(1)Statement crea
21、teStatement()方法。它用来创建Statement的对象,该对象将生成具有给定类型和并发性的ResultSet的对象。,(2)Statement createStatement(int resultSetType,int resultSetConcurrency)方法。它用来按指定的参数创建Statement的对象,该对象将生成具有给定类型和并发性的ResultSet的对象。(3)PreparedStatement prepareStatement(String sql)方法。它用来创建PreparedStatement的对象,该对象将生成具有给定类型、并发性和可保存性的Result
22、Set的对象。关于该类对象的特性在后面介绍。(4)void commit()方法。它用来提交对数据库执行的添加、删除或修改记录等操作。,(5)void rollback()方法。它用来取消对数据库执行的添加、删除或修改记录等操作,将数据库恢复到执行这些操作前的状态。(6)void close()方法。它用来立即释放此Connection的对象的数据库和JDBC资源,而不是等待它们被自动释放。(7)boolean isClosed()方法。它用来测试是否已关闭Connection的对象与数据库的连接。,3Statement接口接口用于执行静态SQL语句并返回它所生成结果的对象。在默认情况下,同一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 Java 张白一 第三 16

链接地址:https://www.31ppt.com/p-6034395.html