《Java教材课件——数据库编程.ppt》由会员分享,可在线阅读,更多相关《Java教材课件——数据库编程.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第1212章章 数据库编程数据库编程 教学目的要求1.了解了解JDBC的概念;的概念;2.掌握使用掌握使用JDBC查询数据库的方法;查询数据库的方法;3.掌握使用掌握使用JDBC更换数据库的方法。更换数据库的方法。12.1 JDBC技术简介技术简介 JDBC概述概述JDBC(Java DataBase Connectivity,Java数数据据库库连连接接)是是一一套套允允许许Java与与SQL数数据据库库对对话话的的程程序序设设计计接接口口,它它是是用用于于执执行行SQL语语句句的的Java API,是是Java应应用用程程序序连连结结数数据据库库、存存取取数数据据的的一一种种机机制制,可
2、可以以为为多多种种关关系系数数据据库库提提供供统统一一的的访访问问,它它由由一一组组用用Java语语言言编编写写的的类类和和接接口口组组成。成。有有了了JDBC,向向各各种种关关系系数数据据库库发发送送SQL语语句句就就很很容容易易了了。换换句句话话说说,有有了了JDBC API,用用户户就就不不必必为为访访问问Sybase数数据据库库专专门门写写一一个个程程序序,而而为为访访问问Oracle数数据据库库又又专专门门写写一一个个程程序序,或或为为访访问问Sql Server数数据据库库再再编编写写另另一一个个程程序序,用用户户只只需需用用JDBC API写写一一个个程程序序逻逻辑辑就就够够了了
3、,它它可可以以向向各各种种不不同同的的数数据据库库发发送送SQL语语句句。所所以以,在在使使用用Java编编程程语语言言编编写写应应用用程程序序时时,不不用用再再去去为为不不同同的的平平台台编编写写不不同同的的应应用用程程序序。由由于于Java语语言言具具有有跨跨平平台台性性,所所以以将将Java和和JDBC结结合合起起来来将将使使程程序序员员只只须须写写一一遍遍程程序序就就可可让让它它在在任任何何平平台台上上运运行行,这这也也进进一一步步体体现现了了Java语语言言“编编写写一一次次,到到处处运运行行”的的宗宗旨。旨。JDBC向向应应用用程程序序开开发发者者提提供供独独立立于于数数据据库库的
4、的、统统一一的的API,这这个个API提提供供了了编编写写的的标标准准,并并考考虑虑了了所所有有不不同同应应用用程程序序设设计计的的标标准准,其其关关键键是是一一组组由由驱驱动动程程序序实实现现的的Java接接口口。驱驱动动程程序序负负责责标标准准的的JDBC调调用用,当当应应用用程程序序被被移移植植到到不不同同的的平平台台或或数数据据库库系系统统,应应用用程程序序不不变变,改改变变的的是是驱驱动动程程序序,驱驱动动程程序序扮扮演演了了多多层层数数据据库库设计中的中间层(或中间件)的角色。设计中的中间层(或中间件)的角色。JDBC的基本功能的基本功能 Java和和JDBC的的结结合合,使使数数
5、据据处处理理变变得得容容易易和和经经济济,即即使使这这些些数数据据是是储储存存在在不不同同数数据据库库管管理理系系统统上上,企企业业可可继继续续使使用用它它们们安安装装好好的的数数据据库库,并并能能便便捷捷地地存存取取数数据据。新新程程序序的的开开发发期期很很短短,安安装装和和版版本本控控制制将将大大为为简简化化。程程序序员员可可以以只只编编写写一一次次应应用用程程序序,然然后后将将它它放放到到服服务务器器上上,之之后后任任何何人人都都可可得得到到最最新新版版本本的的应应用用程程序序。对对于于商商务务上上的的销销售售信信息息服服务务,Java和和JDBC可可为为外外部部客客户户提提供供获获取取
6、信信息息更更新新的的方方法法,特特别别是是在在交交互互频频繁繁的的网网页页中中,如如果果用用通通常常的的方方式式访访问问数数据据库库,用用户户每每次次提提交交表表单单后后,浏浏览览器器都都需需要要刷刷新新、下下载载页页面面,而而在在网网页页中中嵌嵌入入Java Applet,运运用用JDBC访访问问数数据据库库,只只须须下下载载返返回回的的数数据据,大大大提高了访问速度和网络的利用率。大提高了访问速度和网络的利用率。JDBC扩扩展展了了Java的的功功能能,例例如如,用用Java和和JDBC API可可以以发发布布含含有有Applet的的网网页页,而而该该Applet使使用用的的信信息息可可能
7、能来来自自远远程程数数据据库库。企企业业也也可可以以用用JDBC通通过过Intranet将将所所有有职职员员连连到到一一个个或或多多个个内内部部数数据据库库中中,即即使使这这些些职职员员所所用用的的计计算算机机是是各各种种不不同同的的操操作作系系统统,因因为为Java是是跨跨平台的语言。平台的语言。简简单单地地说说,JDBC主主要要完完成成以以下下四四方方面面的的工工作作:加加载载JDBC驱驱动动程程序序;建建立立与与数数据据库库的的连连接接;使使用用SQL语语句句进进行行数数据据库库操操作作并并处处理理结结果;果;关闭相关连接。关闭相关连接。12.2 JDBC接口与驱动程序接口与驱动程序 J
8、DBC主主要要提提供供两两个个层层次次的的接接口口,分分别别是是面面向向程程序序开开发发人人员员的的JDBC API(JDBC应应用用程程序序接接口口)和和 面面 向向 系系 统统 底底 层层 的的 JDBC Drive API(JDBC驱驱动动程程序序接接口口),它它们们的的功功能能如如下下图所示。图所示。从从图图12.2中中可可看看出出JDBC API所所关关心心的的只只是是Java调调用用SQL的的抽抽象象接接口口,而而不不考考虑虑具具体体使使用用时时采采用用的的是是何何种种方方式式,具具体体的的数数 据据 库库 调调 用用 要要 靠靠 JDBC Driver API(JDBC驱驱动动程
9、程序序接接口口)来来完完成成,即即JDBC API可可以以与与数数据据库库无无关关,只只要要提提供供了了JDBC Driver API,就就可可以以JDBC API访访问问任任意意一一种种数数据据库库,无无论论它它位位于于本本地地还是远程服务器。还是远程服务器。JDBC API JDBC API被被描描述述成成一一组组抽抽象象的的接接口口,JDBC的的接接口口和和类类定定义义都都在在包包java.sql中中,利利用用这这些些接接口口和和类类可可以以使使应应用用程程序序很很容容易易地地对对某某个个数数据据库库打打开开连连接接、执执行行SQL语语句句、并并且且处处理理结结果果。下下面面对这些接口提
10、供的方法进行详细介绍。对这些接口提供的方法进行详细介绍。1.java.sql.DriverManager接口接口java.sql.DriverManager用用来来装装载载驱驱动动程程序序,并并为创建新的数据连接提供支持。为创建新的数据连接提供支持。JDBC的的DriverManager如如同同一一座座桥桥梁梁,一一方方面面,它它面面向向程程序序提提供供一一个个统统一一的的连连接接数数据据库库的的接接口口;另另 一一 方方 面面,它它 管管 理理 JDBC驱驱 动动 程程 序序,DriverManager类类就就是是这这个个管管理理层层。下下面面是是DriverManager类提供的主要方法。
11、类提供的主要方法。getDriver(String url):根据指定:根据指定url定位一个驱动;定位一个驱动;getDrivers():获得当前调用访问的所有加载的:获得当前调用访问的所有加载的JDBC驱动;驱动;getConnection():使用给定的:使用给定的url建立一个数据库连建立一个数据库连接,并返回一个接,并返回一个Connection接口对象;接口对象;registerDriver(java.sql.Driver dirver):登记给定的:登记给定的驱动;驱动;setCatalog(String database):确定目标数据库。:确定目标数据库。2.java.sql
12、.Connection接口接口java.sql.Connection完成对某一指定数据库的连接。完成对某一指定数据库的连接。Connection接口用于一个特定的数据库连接,它包接口用于一个特定的数据库连接,它包含维持该连接的所有信息,并提供关于这个连接的含维持该连接的所有信息,并提供关于这个连接的方法。方法。createStatement():在本连接上生成一个:在本连接上生成一个Statement对象,该对象可对本连接的特定数据库发送对象,该对象可对本连接的特定数据库发送SQL语语句;句;setAutoCommit(Boolean autoCommit):设置是否:设置是否自动提交;自动提
13、交;getAutoCommit():获得自动提交状态;:获得自动提交状态;commit():提交数据库上当前的所有待提交的事务;:提交数据库上当前的所有待提交的事务;close():关闭当前的:关闭当前的JDBC数据库连接;数据库连接;3.java.sql.Statement接口接口java.sql.Statement在在一一个个给给定定的的连连接接中中作作为为SQL执执行行声声 明明,它它 包包 含含 了了 两两 个个 重重 要要 的的 子子 类类 型型java.sql.PreparedStatement(用用于于执执行行预预编编译译的的SQL声声明明)和和java.sql.Callable
14、Staement(用用于于执执行行数数据据库库中的存储过程)。中的存储过程)。Statement对对象象用用于于将将SQL语语句句发发送送到到数数据据库库中中。Statement对对象象本本身身并并不不包包含含SQL语语句句,因因而而必必须须给给查查询询方方法法提提供供SQL语语句句作作为为参参数数。下下面面是是Statement接接口口声明的主要方法。声明的主要方法。executeQuery(String sql):执执行行一一条条SQL查查询询语语句句,返返回查询结果对象;回查询结果对象;executeUpdate(String sql):执执行行一一条条SQL插插入入、更更新新、删除语句
15、,返回操作影响的行数;删除语句,返回操作影响的行数;execute(String sql):执行一条:执行一条SQL语句;语句;4.java.sql.ResultSet接口接口java.sql.ResultSet用用于于保保存存数数据据库库结结果果集集,通常通过执行查询数据库的语句生成。通常通过执行查询数据库的语句生成。java.sql.ResultSet对对于于给给定定声声明明获获得得结结果果的的存存取取控控制制。在在这这些些接接口口中中提提供供了了非非常常丰丰富富的的方方法法,可可以以使使用用这这种种方方法法对对数数据据库进行各种操作。库进行各种操作。JDBC Drive API 它它是是
16、面面向向驱驱动动程程序序开开发发的的编编程程接接口口。根根据据其其运运行行条条件件的的不不同同,常常见见的的JDBC驱驱动动程程序序主主要要有有四四种种类类型型,它它们们分别是:分别是:1.JDBC-ODBC桥桥 加加 ODBC驱驱 动动 程程 序序(JDBC-ODBC bridge plus ODBC driver)JDBC-ODBC桥桥驱驱动动程程序序,将将JDBC调调用用转转换换为为ODBC的的调调用用。JDBC-ODBC桥桥包包含含在在Sun公公司司提提供供的的JDBC软软件件包包中中,它它是是一一种种JDBC驱驱动动程程序序,在在ODBC的的基基础础上上实实现现了了JDBC的的功功能
17、能,它它充充分分发发挥挥了了支支持持ODBC大大量量数数据据源源的的优优势势。JDBC利利用用JDBC-ODBC桥桥,通通过过ODBC来来存存取取数数据据,JDBC调调用用被被传传入入JDBC-ODBC桥桥然然后后通通过过ODBC调调用用适适当当的的ODBC驱驱动动程程序序,以以实实现现最最终终的的数数据据存存储储。因因此此,这这种种类类型型的的驱驱动动程程序序适适合合用用于于局局域域网网中中或或者者用用于于三三层层的的结结构构中中。Sun建建议议该该类类驱驱动动程程序只用于原型开发,而不要用于正式的运行环境。序只用于原型开发,而不要用于正式的运行环境。2.本本地地API、部部分分是是Java
18、的的驱驱动动程程序序(Native-API partly-Java driver)该该类类型型的的驱驱动动程程序序用用于于将将JDBC的的调调用用转转换换成成主主流流数数据据库库API的的本本机机调调用用。和和第第一一种种JDBC驱驱动动程程序序类类似似,这这类类驱驱动动程程序序也也需需要要在在每每一一个个客客户户机机安安装装数数据据库库系系统统的的客客户户端端,因因而而适适合合用用于于局局域域网网中中。这这种种类类型型的的驱驱动动程程序序要要求求编编写写面面向向特特定定平平台台的的代代码码,主主流流的的数数据据库库厂厂商商例例如如Oracle和和IBM,都都为为它它们们的的企企业业数数据据库
19、库平平台台提提供了该类驱动程序。供了该类驱动程序。3.JDBC-Net的的纯纯Java驱驱动动程程序序(JDBC-Net pure Java driver)这这种种类类型型的的驱驱动动程程序序将将JDBC调调用用转转换换成成与与数数据据库库无无关关的的网网络络访访问问协协议议,利利用用中中间间件件将将客客户户端端连连接接到到不不同同类类型型的的数数据据库库系系统统。使使用用这这种种驱驱动动程程序序不不需需要要在在客客户户端端安安装装其其他他软软件件,并并且且能能访访问问多多种种数数据据库库。这这种种驱驱动动程程序序是是与与平平台台无无关关的的,并并且且与与用用户户访访问问的的数数据据库库系系统
20、统无无关关,特特别别适适合合组组建建三三层层的的应应用用模模型型,这这是是最最为为灵灵活的活的JDBC驱动程序。驱动程序。4.本本地地协协议议的的纯纯Java驱驱动动程程序序(Native-protocol pure Java driver)这这种种类类型型的的驱驱动动程程序序将将JDBC调调用用直直接接转转化化为为某某种种特特定定数数据据库库的的专专用用的的网网络络访访问问协协议议,可可以以直直接接从从客客户户机机来来访访问问数数据据库库系系统统。这这种种驱驱动动程程序序与与平平台台无无关关,而而与与特特定定的的数数据据库库有有关关,这这类类驱驱动动程程序序一一般般由数据库厂商提供。由数据库
21、厂商提供。第第三三、四四两两类类都都是是纯纯Java的的驱驱动动程程序序,它它们们具具体体Java的的所所有有优优点点,因因此此,对对于于Java开开发发者者来来说说,它它们们在在性性能能、可可移移植植性、功能等方面都有优势。性、功能等方面都有优势。12.3 JDBC在数据库访问中的应用在数据库访问中的应用 建立与数据库的连接建立与数据库的连接 因因为为现现在在使使用用的的桌桌面面平平台台多多数数是是Windows系系统统,而而微微软软的的Access又又是是Office套套件件里里自自带带的的一一个个颇颇受受欢欢迎迎的的桌桌面面数数据据库库管管理理软软件件,所所以以本本教教程程将将以以JDB
22、C与与Access数数据据库库建建立立连连接接并并处处理理Access数数据据库库数数据据的的方方法法为为例例来来进进行行介介绍绍。JDBC与与Access数数据据库库连连接接时时,首首先先建建立立一一个个JDBC-ODBC桥桥接接器器。因因ODBC(开开放放式式数数据据库库连连接接)驱驱动动程程序序可可与与目目前前流流行行的的任任何何一一种种数数据据库库直直接接建建立立,而而Java的的JDBC借借助助桥桥接接器器的的另另一一端端ODBC可可间间接接与与任任何何一一种种数数据据库库建建立立连连接。接。建建立立JDBC-ODBC桥桥接接器器用用“Class.forName(“sun.jdbc.
23、odbc.JdbcOdbcDriver”);”语语句句,其其中中Class是是包包java.lang中中的的一一个个类类,该该类类通通过过调调用用它它的的方方法法forName就就可可以以建建立立JDBC-ODBC桥桥接接器器。建建立立桥桥接接器器可可能能发发生生异异常常,捕捕获这个异常的方法如下:获这个异常的方法如下:try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);catch(ClassNotFoundException e)桥桥接接器器建建好好后后,就就要要将将Java与与Access数数据据库库真真正正建建立立连连接接了了。使使用用包包
24、java.sql中中的的Connection类类 声声 明明 一一 个个 连连 接接 对对 象象,再再 使使 用用 类类 Driver Manager的的方方法法getConnection创创建建这这个个连连接接对对象,语句格式如下:象,语句格式如下:Connection c1;c1=DriverManager.getConnection(jdbc:odbc:数据源数据源名名,user,password);这样,这样,Java程序就与程序就与Access数据库真正建立了数据库真正建立了连接。若连接成功,则返回一个连接。若连接成功,则返回一个Connection类类的对象的对象conn,以后对这
25、个数据源的操作都是基,以后对这个数据源的操作都是基于于conn对象的。对象的。执行查询语句执行查询语句 JDBC一般采用基于一般采用基于Statement对象的查对象的查询方法。首先使用询方法。首先使用Statement类声明一个类声明一个SQL语句对象,然后通过该连接对象调语句对象,然后通过该连接对象调用用createStatement()方法创建()方法创建SQL语语句对象。语句格式为:句对象。语句格式为:Statement sql;sql=conn.createStatement();();有有了了SQL对对象象后后,这这个个对对象象就就可可以以调调用用相相应应的的方方法法实实现现对对数
26、数据据库库的的查查询询操操作作。具具体体地地,在在Statement对对象象上上,可可以以使使用用execQuery()方方法法执执行行查查询询语语句句。execQuery()方方法法的的参参数数是是一一个个String对对象象,即即一一个个SQL的的数数据据处处理理语语句句,并并将将查查询询结结果果放放在在一一个个ResultSet类类声声明的对象中,然后进行相应的处理。例如:明的对象中,然后进行相应的处理。例如:ResultSet rs=sql.execQuery(Select*From TableName);在在SQL中中查查询询操操作作是是通通过过select语语句句来来完完成成的的,
27、基本的基本的select语句格式如下:语句格式如下:select from 假假设设有有一一个个名名为为stu的的表表,里里面面包包含含id、name、sex、score几几个个字字段段,那那么么如如果果要要查查询询表表中中name字段列的所有数据可以使用下面的命令:字段列的所有数据可以使用下面的命令:select name from stu如如果果要要查查询询表表中中的的所所有有数数据据,可可以以使使用用下下面面的的命令:命令:select *from stu这这是是一一条条最最简简单单的的select语语句句,可可以以把把它它分分成成三三部部分分:select、*和和from stu,三三
28、部部分分之之间间用用空空格格隔隔开开。其其中中select为为SQL语语言言的的保保留留字字,是是任任何何查查询询的的第第一一个个命命令令;“*”所所处处的的位位置置上上的的参参数数是是用用来来限限定定要要返返回回的的字字段段的的,“*”表表示示返返回回表表中中所所有有的的字字段段;from是是保保留留字字,它它表表示示从从哪哪个个数数据据库库表表中中得得到到数数据据,在在该该例例中中,是是从从stu表中查找数据。表中查找数据。使用使用select语句除了实现上述简单功能外,还可以利用语句除了实现上述简单功能外,还可以利用select语句提供的各种子句进行更高级的查询功能,具语句提供的各种子句
29、进行更高级的查询功能,具体可实现的查询功能如下:体可实现的查询功能如下:1.筛选查询筛选查询利用利用select的的where子句可以实现对表的查询结果进行子句可以实现对表的查询结果进行筛选。其格式为:筛选。其格式为:select 字段名字段名2,from where 比如要查询比如要查询STU表中表中score值大于值大于60的数据,那么可以的数据,那么可以这样写:这样写:select*from stu where score60而如果要查询而如果要查询stu表中表中score值大于值大于60且且sex为为“男男”的的数据,则语句应写为:数据,则语句应写为:select*from stu w
30、here score60 and sex=男男2.排序查询排序查询利利用用select语语句句提提供供的的order by子子句句,可可以得到排序后的查询结果,其格式为:以得到排序后的查询结果,其格式为:select 字字段段名名2,from order by;比比如如想想使使用用stu表表中中的的id来来进进行行排排序序,那那么则可以这样写:么则可以这样写:select *from stu order by id同同理理如如果果想想使使用用score字字段段来来进进行行排排序序那那么就应该写成:么就应该写成:select *from stu order by score3.模糊查询模糊查询在
31、在实实际际应应用用中中,不不见见得得总总是是能能够够给给出出精精确确的的查查询询条条件件,因因此此经经常常需需要要根根据据一一些些并并不不确确切切的的线线索索来来查查询询信信息息。select语语句句提提供供的的like子子句句来来进进行这类模糊查询。使用行这类模糊查询。使用like子句的语法是:子句的语法是:select 字字 段段 名名 2,from where like比比如如要要查查询询stu表表中中name姓姓“王王”的的人人员员信信息息,那么则可以这样写:那么则可以这样写:select *from stu where name like 王王%以以上上是是查查询询SQL语语句句中中
32、比比较较常常用用的的几几种种查查询询方方法法,在在这这几几种种查查询询语语句句中中,还还可可以以进进行行多多条条件件查查询询等等操操作作。当当然然,更更高高级级的的查查询询语语句句读读者者可可以参考有关以参考有关SQL数据库操作的资料。数据库操作的资料。在获得查询结果后,可以使用在获得查询结果后,可以使用ResultSet类提供类提供的方法对其进行操作:的方法对其进行操作:next():将数据指针往下移动一行,如果成功返():将数据指针往下移动一行,如果成功返回回true;否则返回;否则返回false;previous():将数据指针往上移动一行,如果成():将数据指针往上移动一行,如果成功返
33、回功返回true;否则返回;否则返回false;first():将数据指针移到结果集的第一行;():将数据指针移到结果集的第一行;last():将数据指针移到结果集的最后一行;():将数据指针移到结果集的最后一行;previous():将数据指针往上移动一行,如果成():将数据指针往上移动一行,如果成功返回功返回true;否则返回;否则返回false;getXxx(id):返回当前记录下第):返回当前记录下第id个字段的值,个字段的值,其中其中Xxx一般指相应字段的数据类型,例如:一般指相应字段的数据类型,例如:String、Int、Float等;等;getxx(name):返回当前记录下字段
34、名为):返回当前记录下字段名为name的值,其中的值,其中Xxx同上;同上;close():关闭连接。():关闭连接。对数据库进行更新操作对数据库进行更新操作在在Statement对对象象上上,可可以以使使用用executeUpdate方方法法来来执执行行对对数数据据库库进进行行更更新新的的操操作作。这这些些操操作作 包包 括括 对对 记记 录录 进进 行行 插插 入入、修修 改改 和和 删删 除除 操操 作作。executeUpdate()方方 法法 与与 execQuery()方方 法法 类类 似似,executeUpdate()方方法法的的参参数数也也是是一一个个String对对象象,即
35、即要要执执行行的的DML语语句句。它它返返回回一一个个整整数数,这这个个整整数数表表示对数据库记录的操作成功的次数。示对数据库记录的操作成功的次数。采用采用DML语句对数据库记录进行插入、修改和语句对数据库记录进行插入、修改和删除操作,分别对应于删除操作,分别对应于SQL的的INSERT、UPDATE和和DELETE语句。下面将对该类操作语句。下面将对该类操作语句进行简单的介绍:语句进行简单的介绍:1.插入记录(插入记录(INSERT)使用使用SQL语句的语句的INSERT命令可以向数据库中命令可以向数据库中插入记录,插入记录,INSERT命令的基本形式为:命令的基本形式为:INSERT IN
36、TO 表名表名(字段名字段名1,字段名字段名2)VALUES(值值1,值值2,)该该SQL语句用于将值语句用于将值1,值,值2值值n分别赋给分别赋给字段字段1,字段,字段2,字段字段n,并为表增加一条,并为表增加一条记录。在使用该命令时要注意下面两个规则:记录。在使用该命令时要注意下面两个规则:插入的值必须和列一一对应。插入的值必须和列一一对应。插入值的数据类型必须和对应列的数据类型相一致。插入值的数据类型必须和对应列的数据类型相一致。比如使用下面这个命令就可以为表比如使用下面这个命令就可以为表STU增加一增加一条记录:条记录:INSERT INTO stu VALUES(1000,李玉李玉,
37、男男,99)有有时时候候,可可能能并并不不需需要要给给所所有有的的字字段段都都插插入入数数据据,对对于于这这些些空空缺缺的的数数据据,可可用用该该字字段段的的默默认认值值或或者者用用NULL来来填填入入。只只要要这这个个字字段段没没有有被被设设为为空空,就就可可以以用用NULL值值代代替替。例例如如,在在上上面面的的例例子子中中,如如果果不不知知道道score字段的值,插入语句可以这样写:字段的值,插入语句可以这样写:INSERT INTO stu VALUES(1000,李玉李玉,男男,NULL)另外,也可以明确指出需要填入数据的那些字段的名另外,也可以明确指出需要填入数据的那些字段的名称,
38、比如:称,比如:INSERT INTO stu(id,name,sex,)VALUES(1000,李李玉玉,男男)在在INSERT语句中明确写出字段名,有助于查清语句中明确写出字段名,有助于查清INSERT INTO子句字段个数和子句字段个数和VALUES子句中值的个子句中值的个数,并确保它们两者可以相互匹配。数,并确保它们两者可以相互匹配。SQL根据根据INSERT语句的执行情况会返回一些信息,如语句的执行情况会返回一些信息,如果语句中存在问题,则返回错误信息;如果语句正常果语句中存在问题,则返回错误信息;如果语句正常执行,则返回受到影响的行数。执行,则返回受到影响的行数。2.更新记录(更新
39、记录(UPDATE)使用使用UPDATE命令可以对数据库中符合条件的记录进命令可以对数据库中符合条件的记录进行修改。行修改。Update命令的格式如下:命令的格式如下:UPDATE SET 字段字段1=值值1,字段字段2=值值2 WHERE 使用该命令可以对符合使用该命令可以对符合WHERE条件的所有记录进行条件的所有记录进行修改,将值修改,将值1赋给字段赋给字段1。UPDATE命令需要指明表名和要改变的字段值,这个命令需要指明表名和要改变的字段值,这个字段的值总是由保留字字段的值总是由保留字SET引导,用来告诉引导,用来告诉SQL要改要改变哪个字段,以及要将其改为何值。变哪个字段,以及要将其
40、改为何值。例如例如,以下命令可将以下命令可将stu表中所有表中所有id大于大于900的记录中的记录中Score的值加上的值加上5:UPDATE stu SET score=score+5 WHERE id900注意:如果不加条件,那么将会是针对于表中的所有注意:如果不加条件,那么将会是针对于表中的所有记录的修改。记录的修改。3.删除记录(删除记录(DELETE)对对数数据据库库进进行行删删除除操操作作使使用用的的是是DELETE命命令令,DELETE语语句句有有两两种种,即即带带条条件件的的DELETE语语句句和和不不带带条条件件的的DELETE语语句句。DELETE语语句句的格式如下:的格式
41、如下:DELETE FROM WHERE 条件条件比如想删除比如想删除stu表中所有表中所有score字段小于字段小于60的记的记录录,那么可以这样写:那么可以这样写:DELETE FROM stu WHERE score60上面的列子中如果没有指定条件即没有上面的列子中如果没有指定条件即没有WHERE score60那么将会删除数据库中所有那么将会删除数据库中所有记录如:记录如:DELETE FROM stu这时候这时候stu表将变成空白的一张表。表将变成空白的一张表。事务事务 事事务务由由一一个个或或多多个个这这样样的的语语句句组组成成:这这些些语语句句已已被被执执行行、完完成成并并被被提
42、提交交或或还还原原。当当调调用用方方法法commit()或或rollback()时时,当当前前事事务务即即告告结结束束,另另一一个个事事务务随随即即开开始始。缺缺省省情情况况下下,新新连连接接将将处处于于自自动动提提交交模模式式。也也就就是是说说,当当执执行行完完语语句句后后,将将自自动动对对那那个个语语句句调调用用commit()方方法法。这这种种情情况况下下,由由于于每每个个语语句句都都是是被被单单独独提提交交的的,因因此此一一个个事事务务只只由由一一个个语语句句组组成成。如如果果禁禁用用自自动动提提交交模模式式,事事务务将将要要等等到到commit()或或rollback()方方法法被被
43、显显式式调调用用时时才才结结束束,因因此此它它将将包包括括上上一一次次调调用用commit()或或rollback()方方法法以以来来所所有有执执行行过过的的语语句句。对对于于第第二二种种情情况况,事事务务中的所有语句将作为组来提交或还原。中的所有语句将作为组来提交或还原。方方法法commit()使使SQL语语句句对对数数据据库库所所做做的的任任何何更更改改成成为为永永久久性性的的,它它还还将将释释放放事事务务持持有有的的全全部部锁锁,而而方方法法rollback()将将弃弃去去那那些些更更改改。有有时时用用户户在在另另一一个个更更改改生生效效前前不不想想让让此此更更改改生生效效,这这可可通通
44、过过禁禁用用自自动动提提交交并并将将两两个个更更新新组组合合在在一一个个事事务务中中来来达达到到。如如果果两两个个更更新新都都成成功功,则则调调用用commit()方方法法,从从而而使使两两个个更更新新结结果果成成为为永永久久性性的的;如如果果其其中中之之一一或或两两个个更更新新都都失失败败了了,则则调调用用rollback()方法,以将值恢复为进行更新之前的值。方法,以将值恢复为进行更新之前的值。12.4 JDBC综合应用示例综合应用示例 本本节节将将通通过过第第一一类类JDBC驱驱动动程程序序建建立立几几个个Java程程序序实实例例来来介介绍绍JDBC对对Access数数据据库库进进行行各
45、各种种查查询询操操作作的的方方法法,通通过过本本节节的的例例程程,可可以以使使读读者者对对JDBC操操作作数数据据库有一个更深一步的认识。库有一个更深一步的认识。建立数据库建立数据库 本本例例假假设设用用Access设设计计了了一一个个数数据据库库文文件件student.mdb,在在其其中中建建立立了了一一个个名名为为biao的的表表,在在biao中中有有四四个个字字段段,分分别别为为“学学号号”(文文本本型型)、“姓姓名名”(文文本本型型)、“数数学学”(数数字字型型)、“英英语语”(数字型)。(数字型)。图12.4Access数据库结构 建立数据源建立数据源 在在Java环环境境下下对对A
46、ccess数数据据库库操操作作,必必须须明明确确对对哪哪个个Access数数据据库库操操作作,这这项项准准备备工工作作是是必必不不可可少少的的。这这个个被被操操作作的的Access数数据据库库,被被称称之之为为ODBC数数据据源源。创创建建ODBC数数据据源源需需要要通通过过以以下下步步骤骤实实现现。首首先先打打开开Windows的的控控制制面面板板,双双击管理工具图标,再依次执行下面击管理工具图标,再依次执行下面7步步:打打开开【数数据据源源ODBC管管理理器器】单单击击【系系统统DSN】选选项项卡卡(如如图图12.5)准准备备添添加加数据源,单击数据源,单击【添加添加】按钮。按钮。选选择择
47、新新数数据据源源的的驱驱动动程程序序【Driver do Microsoft Access(*,mdb)】,单单击击【完完成成】按按钮钮进进入入图图12.6的的【ODBC Microsoft Access 安安装装】。在在图图12.6中中输输人人新新数数据据源源名名demo(用用户户可可根根据据自自己己的的习习惯惯爱爱好好起起名名),单单击击【选选择择(S)】按钮。按钮。指指定定数数据据库库(student.mdb),如如图图12.7,单击,单击【确定确定】按钮,返回图按钮,返回图12.6。在在图图12.6中中单单击击【高高级级(A)】按按钮钮,弹弹出出【设设置置高高级级选选项项】对对话话框框
48、,在在【登登录录名名称称】和和【密密码码】文文本本框框中中分分别别填填入入“test”和和“123”。如图。如图12.8所示。所示。单单击击【确确定定】按按钮钮,完完成成数数据据库库连连接接用用户户和和密密码码设设定定的的操操作作,返返回回到到【ODBC Microsoft Access安装安装】对话框。对话框。在在【ODBC Microsoft Access安安装装】对对话话框框中中单单击击【确确定定】按按钮钮,完完成成数数据据源源的的建建立立,返返回回到到【ODBC数数据据源源管管理理器器】对对话话框框,这这时时可可以以发发现现【系系统统数数据据源源】选选项项中中已已增增添添了了一一个个新
49、新的的数数据据源源。单单击击【ODBC数数据据源源管管理理器器】对对话话框框的的【确定确定】按钮,完成数据源的最终建立。按钮,完成数据源的最终建立。ODBC数据源共分为以下三类:数据源共分为以下三类:(1)用用户户DNS:为为位位于于计计算算机机本本地地的的用用户户数数据据源源而而创创建建的的,并并且且只只能能被被创创建建这这个个数数据据源源的的用用户户所使用;所使用;(2)系系统统DNS:为为属属于于计计算算机机或或系系统统而而不不是是特特定定用用户户的的系系统统数数据据源源而而创创建建的的,用用户户必必须须有有访访问问权才能使用;权才能使用;(3)文文件件DNS:文文件件数数据据源源是是O
50、DBC3.0以以后后版版本本添添加加的的一一种种数数据据源源。所所有有安安装装了了相相同同数数据据库库驱驱动动程程序序的的用用户户均均可可以以共共享享文文件件数数据据源源。文文件件数数据据源源没没有有存存储储在在操操作作系系统统的的注注册册表表数数据据库库中中,它它们们被被存存储储在在客客户户端端的的一一个个文文件件中中。所所以以使使用用文文件件数数据据源源有有利利于于ODBC数数据据库库应应用用程程序序的的分分发。发。数据库操作程序数据库操作程序 经经过过上上述述7个个步步骤骤,创创建建了了一一个个数数据据源源demo,这这个个数数据据源源就就是是一一个个待待Java语语言言操操作作的的Ac