Java教材课件12数据库编程.ppt

上传人:小飞机 文档编号:6509820 上传时间:2023-11-07 格式:PPT 页数:59 大小:317.49KB
返回 下载 相关 举报
Java教材课件12数据库编程.ppt_第1页
第1页 / 共59页
Java教材课件12数据库编程.ppt_第2页
第2页 / 共59页
Java教材课件12数据库编程.ppt_第3页
第3页 / 共59页
Java教材课件12数据库编程.ppt_第4页
第4页 / 共59页
Java教材课件12数据库编程.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《Java教材课件12数据库编程.ppt》由会员分享,可在线阅读,更多相关《Java教材课件12数据库编程.ppt(59页珍藏版)》请在三一办公上搜索。

1、第12章 数据库编程,教学目的要求1.了解JDBC的概念;2.掌握使用JDBC查询数据库的方法;3.掌握使用JDBC更换数据库的方法。,12.1 JDBC技术简介,JDBC概述JDBC(Java DataBase Connectivity,Java数据库连接)是一套允许Java与SQL数据库对话的程序设计接口,它是用于执行SQL语句的Java API,是Java应用程序连结数据库、存取数据的一种机制,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组成。,有了JDBC,向各种关系数据库发送SQL语句就很容易了。换句话说,有了JDBC API,用户就不必为访问Sybase

2、数据库专门写一个程序,而为访问Oracle数据库又专门写一个程序,或为访问Sql Server数据库再编写另一个程序,用户只需用JDBC API写一个程序逻辑就够了,它可以向各种不同的数据库发送SQL语句。所以,在使用Java编程语言编写应用程序时,不用再去为不同的平台编写不同的应用程序。由于Java语言具有跨平台性,所以将Java和JDBC结合起来将使程序员只须写一遍程序就可让它在任何平台上运行,这也进一步体现了Java语言“编写一次,到处运行”的宗旨。JDBC向应用程序开发者提供独立于数据库的、统一的API,这个API提供了编写的标准,并考虑了所有不同应用程序设计的标准,其关键是一组由驱动

3、程序实现的Java接口。驱动程序负责标准的JDBC调用,当应用程序被移植到不同的平台或数据库系统,应用程序不变,改变的是驱动程序,驱动程序扮演了多层数据库设计中的中间层(或中间件)的角色。,JDBC的基本功能 Java和JDBC的结合,使数据处理变得容易和经济,即使这些数据是储存在不同数据库管理系统上,企业可继续使用它们安装好的数据库,并能便捷地存取数据。新程序的开发期很短,安装和版本控制将大为简化。程序员可以只编写一次应用程序,然后将它放到服务器上,之后任何人都可得到最新版本的应用程序。对于商务上的销售信息服务,Java和JDBC可为外部客户提供获取信息更新的方法,特别是在交互频繁的网页中,

4、如果用通常的方式访问数据库,用户每次提交表单后,浏览器都需要刷新、下载页面,而在网页中嵌入Java Applet,运用JDBC访问数据库,只须下载返回的数据,大大提高了访问速度和网络的利用率。,JDBC扩展了Java的功能,例如,用Java和JDBC API可以发布含有Applet的网页,而该Applet使用的信息可能来自远程数据库。企业也可以用JDBC通过Intranet将所有职员连到一个或多个内部数据库中,即使这些职员所用的计算机是各种不同的操作系统,因为Java是跨平台的语言。简单地说,JDBC主要完成以下四方面的工作:加载JDBC驱动程序;建立与数据库的连接;使用SQL语句进行数据库操

5、作并处理结果;关闭相关连接。,12.2 JDBC接口与驱动程序,JDBC主要提供两个层次的接口,分别是面向程序开发人员的JDBC API(JDBC应用程序接口)和面向系统底层的JDBC Drive API(JDBC驱动程序接口),它们的功能如下图所示。,图12.2 JDBC结构示意图,从图12.2中可看出JDBC API所关心的只是Java调用SQL的抽象接口,而不考虑具体使用时采用的是何种方式,具体的数据库调用要靠JDBC Driver API(JDBC驱动程序接口)来完成,即JDBC API可以与数据库无关,只要提供了JDBC Driver API,就可以JDBC API访问任意一种数据库

6、,无论它位于本地还是远程服务器。,JDBC API JDBC API被描述成一组抽象的接口,JDBC的接口和类定义都在包java.sql中,利用这些接口和类可以使应用程序很容易地对某个数据库打开连接、执行SQL语句、并且处理结果。下面对这些接口提供的方法进行详细介绍。1.java.sql.DriverManager接口java.sql.DriverManager用来装载驱动程序,并为创建新的数据连接提供支持。JDBC的DriverManager如同一座桥梁,一方面,它面向程序提供一个统一的连接数据库的接口;另一方面,它管理JDBC驱动程序,DriverManager类就是这个管理层。下面是Dr

7、iverManager类提供的主要方法。,getDriver(String url):根据指定url定位一个驱动;getDrivers():获得当前调用访问的所有加载的JDBC驱动;getConnection():使用给定的url建立一个数据库连接,并返回一个Connection接口对象;registerDriver(java.sql.Driver dirver):登记给定的驱动;setCatalog(String database):确定目标数据库。,2.java.sql.Connection接口java.sql.Connection完成对某一指定数据库的连接。Connection接口用于一

8、个特定的数据库连接,它包含维持该连接的所有信息,并提供关于这个连接的方法。createStatement():在本连接上生成一个Statement对象,该对象可对本连接的特定数据库发送SQL语句;setAutoCommit(Boolean autoCommit):设置是否自动提交;getAutoCommit():获得自动提交状态;commit():提交数据库上当前的所有待提交的事务;close():关闭当前的JDBC数据库连接;,3.java.sql.Statement接口java.sql.Statement在一个给定的连接中作为SQL执行声明,它包含了两个重要的子类型java.sql.Pre

9、paredStatement(用于执行预编译的SQL声明)和java.sql.CallableStaement(用于执行数据库中的存储过程)。Statement对象用于将SQL语句发送到数据库中。Statement对象本身并不包含SQL语句,因而必须给查询方法提供SQL语句作为参数。下面是Statement接口声明的主要方法。executeQuery(String sql):执行一条SQL查询语句,返回查询结果对象;executeUpdate(String sql):执行一条SQL插入、更新、删除语句,返回操作影响的行数;execute(String sql):执行一条SQL语句;,4.jav

10、a.sql.ResultSet接口java.sql.ResultSet用于保存数据库结果集,通常通过执行查询数据库的语句生成。java.sql.ResultSet对于给定声明获得结果的存取控制。在这些接口中提供了非常丰富的方法,可以使用这种方法对数据库进行各种操作。,JDBC Drive API 它是面向驱动程序开发的编程接口。根据其运行条件的不同,常见的JDBC驱动程序主要有四种类型,它们分别是:1.JDBC-ODBC桥加ODBC驱动程序(JDBC-ODBC bridge plus ODBC driver)JDBC-ODBC桥驱动程序,将JDBC调用转换为ODBC的调用。JDBC-ODBC桥

11、包含在Sun公司提供的JDBC软件包中,它是一种JDBC驱动程序,在ODBC的基础上实现了JDBC的功能,它充分发挥了支持ODBC大量数据源的优势。JDBC利用JDBC-ODBC桥,通过ODBC来存取数据,JDBC调用被传入JDBC-ODBC桥然后通过ODBC调用适当的ODBC驱动程序,以实现最终的数据存储。因此,这种类型的驱动程序适合用于局域网中或者用于三层的结构中。Sun建议该类驱动程序只用于原型开发,而不要用于正式的运行环境。,2.本地API、部分是Java的驱动程序(Native-API partly-Java driver)该类型的驱动程序用于将JDBC的调用转换成主流数据库API的

12、本机调用。和第一种JDBC驱动程序类似,这类驱动程序也需要在每一个客户机安装数据库系统的客户端,因而适合用于局域网中。这种类型的驱动程序要求编写面向特定平台的代码,主流的数据库厂商例如Oracle和IBM,都为它们的企业数据库平台提供了该类驱动程序。,3.JDBC-Net的纯Java驱动程序(JDBC-Net pure Java driver)这种类型的驱动程序将JDBC调用转换成与数据库无关的网络访问协议,利用中间件将客户端连接到不同类型的数据库系统。使用这种驱动程序不需要在客户端安装其他软件,并且能访问多种数据库。这种驱动程序是与平台无关的,并且与用户访问的数据库系统无关,特别适合组建三层

13、的应用模型,这是最为灵活的JDBC驱动程序。,4.本地协议的纯Java驱动程序(Native-protocol pure Java driver)这种类型的驱动程序将JDBC调用直接转化为某种特定数据库的专用的网络访问协议,可以直接从客户机来访问数据库系统。这种驱动程序与平台无关,而与特定的数据库有关,这类驱动程序一般由数据库厂商提供。第三、四两类都是纯Java的驱动程序,它们具体Java的所有优点,因此,对于Java开发者来说,它们在性能、可移植性、功能等方面都有优势。,12.3 JDBC在数据库访问中的应用,建立与数据库的连接 因为现在使用的桌面平台多数是Windows系统,而微软的Acc

14、ess又是Office套件里自带的一个颇受欢迎的桌面数据库管理软件,所以本教程将以JDBC与Access数据库建立连接并处理Access数据库数据的方法为例来进行介绍。JDBC与Access数据库连接时,首先建立一个JDBC-ODBC桥接器。因ODBC(开放式数据库连接)驱动程序可与目前流行的任何一种数据库直接建立,而Java的JDBC借助桥接器的另一端ODBC可间接与任何一种数据库建立连接。,建立JDBC-ODBC桥接器用“Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);”语句,其中Class是包java.lang中的一个类,该类通过调用它的方法f

15、orName就可以建立JDBC-ODBC桥接器。建立桥接器可能发生异常,捕获这个异常的方法如下:try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);catch(ClassNotFoundException e),桥接器建好后,就要将Java与Access数据库真正建立连接了。使用包java.sql中的Connection类声明一个连接对象,再使用类Driver Manager的方法getConnection创建这个连接对象,语句格式如下:Connection c1;c1=DriverManager.getConnection(jdbc:odbc:

16、数据源名,user,password);这样,Java程序就与Access数据库真正建立了连接。若连接成功,则返回一个Connection类的对象conn,以后对这个数据源的操作都是基于conn对象的。,执行查询语句 JDBC一般采用基于Statement对象的查询方法。首先使用Statement类声明一个SQL语句对象,然后通过该连接对象调用createStatement()方法创建SQL语句对象。语句格式为:Statement sql;sql=conn.createStatement();,有了SQL对象后,这个对象就可以调用相应的方法实现对数据库的查询操作。具体地,在Statement对

17、象上,可以使用execQuery()方法执行查询语句。execQuery()方法的参数是一个String对象,即一个SQL的数据处理语句,并将查询结果放在一个ResultSet类声明的对象中,然后进行相应的处理。例如:ResultSet rs=sql.execQuery(Select*From TableName);在SQL中查询操作是通过select语句来完成的,基本的select语句格式如下:select from,假设有一个名为stu的表,里面包含id、name、sex、score几个字段,那么如果要查询表中name字段列的所有数据可以使用下面的命令:select name from s

18、tu如果要查询表中的所有数据,可以使用下面的命令:select*from stu这是一条最简单的select语句,可以把它分成三部分:select、*和from stu,三部分之间用空格隔开。其中select为SQL语言的保留字,是任何查询的第一个命令;“*”所处的位置上的参数是用来限定要返回的字段的,“*”表示返回表中所有的字段;from是保留字,它表示从哪个数据库表中得到数据,在该例中,是从stu表中查找数据。,使用select语句除了实现上述简单功能外,还可以利用select语句提供的各种子句进行更高级的查询功能,具体可实现的查询功能如下:1.筛选查询利用select的where子句可以

19、实现对表的查询结果进行筛选。其格式为:select 字段名2,from where 比如要查询STU表中score值大于60的数据,那么可以这样写:select*from stu where score60而如果要查询stu表中score值大于60且sex为“男”的数据,则语句应写为:select*from stu where score60 and sex=男,2.排序查询利用select语句提供的order by子句,可以得到排序后的查询结果,其格式为:select 字段名2,from order by;比如想使用stu表中的id来进行排序,那么则可以这样写:select*from stu

20、 order by id同理如果想使用score字段来进行排序那么就应该写成:select*from stu order by score,3.模糊查询在实际应用中,不见得总是能够给出精确的查询条件,因此经常需要根据一些并不确切的线索来查询信息。select语句提供的like子句来进行这类模糊查询。使用like子句的语法是:select 字段名2,from where like比如要查询stu表中name姓“王”的人员信息,那么则可以这样写:select*from stu where name like 王%以上是查询SQL语句中比较常用的几种查询方法,在这几种查询语句中,还可以进行多条件查询

21、等操作。当然,更高级的查询语句读者可以参考有关SQL数据库操作的资料。,在获得查询结果后,可以使用ResultSet类提供的方法对其进行操作:next():将数据指针往下移动一行,如果成功返回true;否则返回false;previous():将数据指针往上移动一行,如果成功返回true;否则返回false;first():将数据指针移到结果集的第一行;last():将数据指针移到结果集的最后一行;previous():将数据指针往上移动一行,如果成功返回true;否则返回false;getXxx(id):返回当前记录下第id个字段的值,其中Xxx一般指相应字段的数据类型,例如:String、

22、Int、Float等;getxx(name):返回当前记录下字段名为name的值,其中Xxx同上;close():关闭连接。,对数据库进行更新操作在Statement对象上,可以使用executeUpdate方法来执行对数据库进行更新的操作。这些操作包括对记录进行插入、修改和删除操作。executeUpdate()方法与execQuery()方法类似,executeUpdate()方法的参数也是一个String对象,即要执行的DML语句。它返回一个整数,这个整数表示对数据库记录的操作成功的次数。采用DML语句对数据库记录进行插入、修改和删除操作,分别对应于SQL的INSERT、UPDATE和D

23、ELETE语句。下面将对该类操作语句进行简单的介绍:,1.插入记录(INSERT)使用SQL语句的INSERT命令可以向数据库中插入记录,INSERT命令的基本形式为:INSERT INTO 表名(字段名1,字段名2)VALUES(值1,值2,)该SQL语句用于将值1,值2值n分别赋给字段1,字段2,字段n,并为表增加一条记录。在使用该命令时要注意下面两个规则:插入的值必须和列一一对应。插入值的数据类型必须和对应列的数据类型相一致。比如使用下面这个命令就可以为表STU增加一条记录:INSERT INTO stu VALUES(1000,李玉,男,99),有时候,可能并不需要给所有的字段都插入数

24、据,对于这些空缺的数据,可用该字段的默认值或者用NULL来填入。只要这个字段没有被设为空,就可以用NULL值代替。例如,在上面的例子中,如果不知道score字段的值,插入语句可以这样写:INSERT INTO stu VALUES(1000,李玉,男,NULL)另外,也可以明确指出需要填入数据的那些字段的名称,比如:INSERT INTO stu(id,name,sex,)VALUES(1000,李玉,男)在INSERT语句中明确写出字段名,有助于查清INSERT INTO子句字段个数和VALUES子句中值的个数,并确保它们两者可以相互匹配。SQL根据INSERT语句的执行情况会返回一些信息,

25、如果语句中存在问题,则返回错误信息;如果语句正常执行,则返回受到影响的行数。,2.更新记录(UPDATE)使用UPDATE命令可以对数据库中符合条件的记录进行修改。Update命令的格式如下:UPDATE SET 字段1=值1,字段2=值2 WHERE 使用该命令可以对符合WHERE条件的所有记录进行修改,将值1赋给字段1。UPDATE命令需要指明表名和要改变的字段值,这个字段的值总是由保留字SET引导,用来告诉SQL要改变哪个字段,以及要将其改为何值。例如,以下命令可将stu表中所有id大于900的记录中Score的值加上5:UPDATE stu SET score=score+5 WHER

26、E id900注意:如果不加条件,那么将会是针对于表中的所有记录的修改。,3.删除记录(DELETE)对数据库进行删除操作使用的是DELETE命令,DELETE语句有两种,即带条件的DELETE语句和不带条件的DELETE语句。DELETE语句的格式如下:DELETE FROM WHERE 条件比如想删除stu表中所有score字段小于60的记录,那么可以这样写:DELETE FROM stu WHERE score60上面的列子中如果没有指定条件即没有WHERE score60那么将会删除数据库中所有记录如:DELETE FROM stu这时候stu表将变成空白的一张表。,事务 事务由一个或

27、多个这样的语句组成:这些语句已被执行、完成并被提交或还原。当调用方法commit()或rollback()时,当前事务即告结束,另一个事务随即开始。缺省情况下,新连接将处于自动提交模式。也就是说,当执行完语句后,将自动对那个语句调用commit()方法。这种情况下,由于每个语句都是被单独提交的,因此一个事务只由一个语句组成。如果禁用自动提交模式,事务将要等到commit()或rollback()方法被显式调用时才结束,因此它将包括上一次调用commit()或rollback()方法以来所有执行过的语句。对于第二种情况,事务中的所有语句将作为组来提交或还原。,方法commit()使SQL语句对数

28、据库所做的任何更改成为永久性的,它还将释放事务持有的全部锁,而方法rollback()将弃去那些更改。有时用户在另一个更改生效前不想让此更改生效,这可通过禁用自动提交并将两个更新组合在一个事务中来达到。如果两个更新都成功,则调用commit()方法,从而使两个更新结果成为永久性的;如果其中之一或两个更新都失败了,则调用rollback()方法,以将值恢复为进行更新之前的值。,12.4 JDBC综合应用示例,本节将通过第一类JDBC驱动程序建立几个Java程序实例来介绍JDBC对Access数据库进行各种查询操作的方法,通过本节的例程,可以使读者对JDBC操作数据库有一个更深一步的认识。,建立数

29、据库 本例假设用Access设计了一个数据库文件student.mdb,在其中建立了一个名为biao的表,在biao中有四个字段,分别为“学号”(文本型)、“姓名”(文本型)、“数学”(数字型)、“英语”(数字型)。,图12.4Access数据库结构,建立数据源 在Java环境下对Access数据库操作,必须明确对哪个Access数据库操作,这项准备工作是必不可少的。这个被操作的Access数据库,被称之为ODBC数据源。创建ODBC数据源需要通过以下步骤实现。首先打开Windows的控制面板,双击管理工具图标,再依次执行下面7步:打开【数据源ODBC管理器】单击【系统DSN】选项卡(如图12

30、.5)准备添加数据源,单击【添加】按钮。,选择新数据源的驱动程序【Driver do Microsoft Access(*,mdb)】,单击【完成】按钮进入图12.6的【ODBC Microsoft Access 安装】。在图12.6中输人新数据源名demo(用户可根据自己的习惯爱好起名),单击【选择(S)】按钮。,指定数据库(student.mdb),如图12.7,单击【确定】按钮,返回图12.6。,在图12.6中单击【高级(A)】按钮,弹出【设置高级选项】对话框,在【登录名称】和【密码】文本框中分别填入“test”和“123”。如图12.8所示。,单击【确定】按钮,完成数据库连接用户和密码

31、设定的操作,返回到【ODBC Microsoft Access安装】对话框。在【ODBC Microsoft Access安装】对话框中单击【确定】按钮,完成数据源的建立,返回到【ODBC数据源管理器】对话框,这时可以发现【系统数据源】选项中已增添了一个新的数据源。单击【ODBC数据源管理器】对话框的【确定】按钮,完成数据源的最终建立。,ODBC数据源共分为以下三类:(1)用户DNS:为位于计算机本地的用户数据源而创建的,并且只能被创建这个数据源的用户所使用;(2)系统DNS:为属于计算机或系统而不是特定用户的系统数据源而创建的,用户必须有访问权才能使用;(3)文件DNS:文件数据源是ODBC

32、3.0以后版本添加的一种数据源。所有安装了相同数据库驱动程序的用户均可以共享文件数据源。文件数据源没有存储在操作系统的注册表数据库中,它们被存储在客户端的一个文件中。所以使用文件数据源有利于ODBC数据库应用程序的分发。,数据库操作程序 经过上述7个步骤,创建了一个数据源demo,这个数据源就是一个待Java语言操作的Access数据库文件student.mdb,下面就可以通过例12.1和例12.2的Java程序对该数据库分别进行各种查询和更新操作了。例12.1 通过JDBC对数据库进行查询操作。/Li12_01.Javaimport javax.swing.*;import java.awt

33、.*;import java.sql.*;import java.awt.event.*;,class Li1201 public static void main(String args)new fwin();class fwin extends JFrame implements ActionListener JTable table;JButton b1,b2,b3,b4;Object a;Connection con;Statement sql;ResultSet rs;Object columnName=学号,姓名,数学,英语;fwin()super(数据库查询);a=new Obj

34、ect604;table=new JTable(a,columnName);setSize(500,500);,b1=new JButton(浏览表);b2=new JButton(排序查询);b3=new JButton(模糊查询);b4=new JButton(退出);b1.addActionListener(this);/给按钮b1设里监视器 b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);Container con=getContentPane();/创建一个面板 con.

35、setLayout(new FlowLayout();/设置面板的布局 con.add(b1);/将按钮b1放到面板上 con.add(b2);con.add(b3);con.add(b4);,Container container=getContentPane();/创建一个面板 container.add(new JScrollPane(table),BorderLayout.CENTER);/添加滚动窗口到面板上 setVisible(true);/设里窗体可见 validate();/设置窗体上的组件可见 addWindowListener(new WindowAdapter()/关闭

36、窗口 public void windowClosing(WindowEvent e)System.exit(0););int i=0;public void actionPerformed(ActionEvent ev)/引发按钮事件 if(ev.getSource()=b1)/浏览表 while(i=0)/清空上次查询结果 ai0=;ai1=;ai2=;ai3=;i-;,i=0;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/建立桥接器 catch(ClassNotFoundException e)try con=DriverManager

37、.getConnection(jdbc:odbc:demo,test,123);/连接数据库 sql=con.createStatement();/创建SQL语句 rs=sql.executeQuery(Select*From biao);/显示表中的全部记录 while(rs.next()/处理查询过程 String number=rs.getString(学号);/从数据库表中取出一个记录的学号字段 String name=rs.getString(姓名);int math=rs.getInt(数学);,int eng=rs.getInt(英语);ai0=number;/将学号字段写人表格

38、中 ai1=name;ai2=String.valueOf(math);ai3=String.valueOf(eng);i+;con.close();repaint();/刷新 catch(SQLException e)else if(ev.getSource()=b2)/排序查询,while(i=0)/清空上次查询结果 ai0=;ai1=;ai2=;ai3=;i-;i=0;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/建立桥接器 catch(ClassNotFoundException e)try con=DriverManager.get

39、Connection(jdbc:odbc:demo,test,123);/连接数据库 sql=con.createStatement();/创建SQL语句 rs=sql.executeQuery(Select*From biao ORDER BY 数学);/按数学成绩排序,while(rs.next()/处理查询过程 String number=rs.getString(学号);String name=rs.getString(姓名);int math=rs.getInt(数学);int eng=rs.getInt(英语);ai0=number;ai1=name;ai2=String.valu

40、eOf(math);ai3=String.valueOf(eng);i+;,con.close();repaint();/刷新 catch(SQLException e)else if(ev.getSource()=b3)/模糊查询 while(i=0)/清空上次查询结果 ai0=;ai1=;ai2=;ai3=;i-;i=0;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/建立桥接器 catch(ClassNotFoundException e),try con=DriverManager.getConnection(jdbc:odbc:dem

41、o,test,123);/连接数据库 sql=con.createStatement();/创建SQL语句 rs=sql.executeQuery(Select*From biao WHERE 姓名 Like 王%);/显示王姓学生 while(rs.next()/处理查询过程 String number=rs.getString(学号);String name=rs.getString(姓名);int math=rs.getInt(数学);int eng=rs.getInt(英语);ai0=number;ai1=name;ai2=String.valueOf(math);ai3=String

42、.valueOf(eng);i+;,con.close();repaint();/刷新 catch(SQLException e)else if(ev.getSource()=b4)/退出 dispose();通过编译运行后,将出现图12.9的运行界面。可以通过单击“浏览表”显示查询到的数据库中的所有记录;单击“排序查询”显示对数据库按照数学成绩排序后的所有记录;单击“模糊查询”可以显示出在姓名中所有姓“王”的记录。,通过例12.1的程序,可以了解到Java对数据库进行各种查询操作的语句。但是,有时还需要对数据库进行一些更新操作,比如插入一条记录、修改某些记录或删除某些记录等,下面将通过例12

43、.2对JDBC对数据库的更新进行简单介绍。例12.2 通过JDBC对数据库进行更新操作。,/Li12_02.javaimport java.sql.*;class Li12_02 public static void main(String args)Connection con;Statement sql;int rs;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/建立桥接器 catch(ClassNotFoundException e)try con=DriverManager.getConnection(jdbc:odbc:demo,t

44、est,123);/连接数据库 con.setAutoCommit(false);/取消事务的自动提交 sql=con.createStatement();/创建SQL语句,String strSQLInsert=INSERT INTO biao VALUES(200,王小五,87,76);String strSQLUpdate=UPDATE biao SET 数学=100 WHERE 姓名=王小五;String strSQLDelete=DELETE FROM biao WHERE 姓名=王二;rs=sql.executeUpdate(strSQLInsert);/添加一条记录并返回添加记录

45、条数 System.out.println(添加信息记录条数:+rs);/显示添加信息记录数 rs=sql.executeUpdate(strSQLUpdate);/修改“王小五”的数学成绩为100 System.out.println(修改信息记录条数:+rs);rs=sql.executeUpdate(strSQLDelete);/删除姓名为“王二”的记录 System.out.println(删除信息记录条数:+rs);,mit();/事务提交 con.close();catch(SQLException e)对于添加、修改或者是删除记录之后,可以一并调用对象的commit()方法,进行事务的提交。因为信息记录只有在事务提交之后才真正进行了修改,否则如果不提交,则虽然添加、修改或者是删除记录的返回结果不为零,但是真正的数据并没有得到修改!不过,JDBC默认事务是自动提交的,如果本程序中不使用con.setAutoCommit(false)语句,在每执行一条SQL语句后实际上事务即进行了提交,则在程序中也没有必要使用commit()方法了。另外需要注意的是,在查询时使用的executeQuery()方法返回的是ResultSet类型数据,而更新记录使用的executeUpdate()方法返回的则是int类型的数据,表示操作数据记录的个数。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号