Java基础教程(第3版)_第10章_JDBC数据库操作_第1页
Java基础教程(第3版)_第10章_JDBC数据库操作_第2页
Java基础教程(第3版)_第10章_JDBC数据库操作_第3页
Java基础教程(第3版)_第10章_JDBC数据库操作_第4页
Java基础教程(第3版)_第10章_JDBC数据库操作_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 1 页注意:开始用功了注意:开始用功了!第 2 页Java 基础教程(第基础教程(第3版)版) 第第10章章配合例子源代码一起使用例子源代码一起使用Power point 制作:耿祥义 张跃平JDBC数据库操作数据库操作 第 3 页主要内容主要内容第 4 页10.1 Microsoft Access Microsoft Access 数据库管理系统数据库管理系统 10.1.1 建立数据库建立数据库 建立一个名字为建立一个名字为shopshop的数据库。的数据库。操作步骤如下:操作步骤如下: 单击单击“开始开始”“”“所有程所有程序序”“”“Microsoft Access”Microsof

2、t Access”,在 新 建 数 据 库 界 面 选 择在 新 建 数 据 库 界 面 选 择 “ 空空AccessAccess数据库数据库”,然后命名、保,然后命名、保存新建的数据库,在这里我们命存新建的数据库,在这里我们命名 的 数 据 库 是名 的 数 据 库 是 s h o ps h o p , 保 存 在保 存 在C:ch10C:ch10中。中。 第 5 页10.1.2 创建表创建表 在在shopshop数据库中创建名字为数据库中创建名字为goodsgoods的表。在的表。在shopshop管管理的理的“表表”的界面上选择的界面上选择“使用设计器创建表使用设计器创建表”,然后,然后

3、单击界面上的单击界面上的“设计设计”菜单,将出现相应的建表界面,菜单,将出现相应的建表界面,我们建立的表是我们建立的表是goodsgoods,该表的字段该表的字段( (属性属性) )为:为:number( (文本文本) ) name( (文本文本) ) madeTime( (日期日期) ) price( (数字,双精度数字,双精度) )。 在在shop管理的管理的“表表”的界面上,用鼠标双击已创建的界面上,用鼠标双击已创建的表可以为该表添加记录的表可以为该表添加记录。第 6 页 10.2 JDBCJDBC Java提供了专门用于操作数据库的API,即JDBC (Java DataBase Co

4、nnection) 。JDBC操作不同的数据库仅仅是连接方式上的差异而已,使用JDBC的应用程序一旦和数据库建立连接,就可以使用JDBC提供的API操作数据库.程序经常使JDBC进行如下的操作 : (1)与一个数据库建立连接。与一个数据库建立连接。 (2)向数据库发送向数据库发送SQL语句。语句。 (3)处理数据库返回的结果。处理数据库返回的结果。第 7 页10.3 连接数据库连接数据库 10.3.1 连接方式的选择连接方式的选择 和数据库建立连接的常用两种方式是:建立和数据库建立连接的常用两种方式是:建立JDBCODBCJDBCODBC桥接桥接器和加载纯器和加载纯JavaJava数据库驱动程

5、序:数据库驱动程序:使用使用JDBCODBCJDBCODBC桥接器方式的机制是,应用程序只需建立桥接器方式的机制是,应用程序只需建立JDBCJDBC和和ODBCODBC之间的连接,即所谓的建立之间的连接,即所谓的建立JDBCODBCJDBCODBC桥接器,而和数据库桥接器,而和数据库的连接由的连接由ODBCODBC去完成。去完成。如果使用纯如果使用纯JavaJava数据库驱动程序连接数据库需要得到数据库厂商数据库驱动程序连接数据库需要得到数据库厂商提供的纯提供的纯JavaJava数据库驱动程序。数据库驱动程序。 使用使用JDBCODBC桥接器连接数据库的优点:桥接器连接数据库的优点:使得所编写

6、的程序可以处理几乎所有类型的数据库。使用使用JDBCODBCJDBCODBC桥接器连接数据库的缺点:桥接器连接数据库的缺点:使得所编写的程序依赖于ODBC,移植性差。使用纯使用纯Java数据库驱动程序连接数据库的优点:数据库驱动程序连接数据库的优点:移植性好,不依赖平台。缺点是不同的数据库需要不同的驱动程序。第 8 页10.3 连接数据库连接数据库 10.3.1使用使用JDBCODBCJDBCODBC桥接器连接数据库桥接器连接数据库 使用使用JDBCODBC桥接器连接数据库的桥接器连接数据库的3个步骤个步骤(1)建ODBC数据源(2)建立JDBC-ODBC桥接器(3)和ODBC数据源建立连接第

7、 9 页10.3.2 ODBCODBC数据源数据源 1 1创建、修改或删除数据源创建、修改或删除数据源 选择选择“控制面板控制面板”“”“管理工具管理工具”“”“ODBCODBC数据源数据源”(某些(某些windows xpwindows xp系统,需选择系统,需选择“控制面板控制面板”“”“性能和维护性能和维护”“”“管管理工具理工具”“”“ODBCODBC数据源数据源”)。)。 双击双击ODBCODBC数据源图标,出现的界面显示了用户已有的数据源的数据源图标,出现的界面显示了用户已有的数据源的名称。选择名称。选择“系统系统DSN”DSN”或或“用户用户DSN”DSN”,单击单击“添加添加”

8、按钮,可按钮,可以创建新的数据源;单击以创建新的数据源;单击“配置配置”按钮,可以重新配置已有的数按钮,可以重新配置已有的数据源;单击据源;单击“删除删除”按钮,可以删除已有的数据源。按钮,可以删除已有的数据源。2 2为数据源选择驱动程序为数据源选择驱动程序 因为要访问因为要访问AccessAccess数据库数据库, ,选择选择Microsoft Acess DriverMicrosoft Acess Driver(* *.mdb.mdb)。3 3数据源名称及对应数据库的所在位置数据源名称及对应数据库的所在位置 在在名称栏名称栏里为数据源起一个自己喜欢的名字,这里我们起的里为数据源起一个自己喜

9、欢的名字,这里我们起的名字是名字是myData 。这个数据源就是指某个数据库。在这个数据源就是指某个数据库。在“数据库选数据库选择择”栏中选择一个数据库,这里我们选择的是栏中选择一个数据库,这里我们选择的是C:ch10下的下的shop.mdb数据库。数据库。 第 10 页10.3.2 ODBCODBC数据源数据源_ _图示图示 第 11 页10.3.3 建立建立JDBC-ODBCJDBC-ODBC桥接器桥接器 JDBC使用使用java.lang包中的包中的Class类建立类建立JDBC-ODBC桥接器。建立桥接器时可能发生异常,必须捕获桥接器。建立桥接器时可能发生异常,必须捕获这个异常,建立桥

10、接器的代码是:这个异常,建立桥接器的代码是:try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e) System.out.println(e); 第 12 页10.3.4 建立连接建立连接 编写连接数据库代码不会出现数据库的名称,只能出现数编写连接数据库代码不会出现数据库的名称,只能出现数据源的名字。据源的名字。 首先使用首先使用java.sqljava.sql包中的包中的ConnectionConnection类类声明一个对象,然后声明一个对象,然后再使用类再使用类DriverManage

11、rDriverManager调用它的静态方法调用它的静态方法getConnectiongetConnection创建这创建这个连接对象,个连接对象,建立连接时应捕获建立连接时应捕获SQLException异常异常 :try Connection con= DriverManager.getConnection(“jdbc:odbc:数据源名字数据源名字”, login name, password ); catch(SQLException e) Connection con=DriverManager. getConnection(jdbc:odbc:数据源名字数据源名字, ,);为了能和数

12、据源为了能和数据源myDatamyData交换数据,建立连接时应捕获交换数据,建立连接时应捕获SQLExceptionSQLException异常:异常:try Connection con=DriverManager.getConnection(jdbc:odbc:myData, ,);catch(SQLException e)第 13 页10.4 查询操作查询操作 JDBCJDBC和数据库表进行交互的主要方式是使用和数据库表进行交互的主要方式是使用SQLSQL语句,语句,JDBCJDBC提供的提供的APIAPI可以将标准的可以将标准的SQLSQL语句发送给数据库,实现和数据库的语句发送给数

13、据库,实现和数据库的交互。交互。 第 14 页10.4.1 顺序查询顺序查询 对一个数据库中表进行查询操作的具体步骤如下。对一个数据库中表进行查询操作的具体步骤如下。 1 1向数据库发送向数据库发送SQLSQL查询语句查询语句 try Statement sql=con.createStatement(); catch(SQLException e ) 2处理查询结果处理查询结果 ResultSet rs=sql.executeQuery(SELECT * FROM goods); ResultSet rs = sql.executeQuery(SELECT name,price FROM g

14、oods);3.3.查询结果放在实现了查询结果放在实现了ResultSetResultSet接口的结果集类中。接口的结果集类中。 第 15 页15ResultSet接口 ResultSet对象包含符合指定SQL语句中条件的所有行,即结果集 并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。 ResultSet对象使用对象使用next()方法移到下一数据行方法移到下一数据行 ResultSet对象使用对象使用getXxx方法获得字段值方法获得字段值 表表10.1给了出了给了出了ResultSet对象的若干方法。对象的若干方法。 注:无论字段是何种属性,

15、总可以使用注:无论字段是何种属性,总可以使用getString(int columnIndex)或或getString(String columnName)方法返回字段值的串表示。方法返回字段值的串表示。 第 16 页 例子例子1是一个简单的是一个简单的Java应用程序,该程应用程序,该程序连接到数据源序连接到数据源myData,查询查询goods表表中中price字段值大于字段值大于300000的全部记录。的全部记录。程序运行效果如图程序运行效果如图10.8。 第 17 页10.4.2 控制游标控制游标 需要在结果集中前后移动、显示结果集指定的一条记录或随机显示若干条需要在结果集中前后移动、

16、显示结果集指定的一条记录或随机显示若干条记录等。这时,必须要返回一个可滚动的结果集。为了得到一个可滚动的结果记录等。这时,必须要返回一个可滚动的结果集。为了得到一个可滚动的结果集,需使用下述方法先获得一个集,需使用下述方法先获得一个Statement对象:对象: Statement stmt=con.createStatement(int type ,int concurrency); 然后根据参数的然后根据参数的type、concurrency的取值情况的取值情况,stmt返回相应类型的结果集:返回相应类型的结果集: ResultSet re=stmt.executeQuery(SQL语句语

17、句); type的取值、的取值、 concurrency的取值见的取值见page 176 滚动查询经常用到滚动查询经常用到ResultSet的下述方法:的下述方法: public boolean previous() public boolean previous():将游标向上移动 public void beforeFirst() public void beforeFirst():将游标移动到结果集的初始位置。 更多方法见更多方法见page 176 例子例子2中中,在查询,在查询goods表表时,首先将游标移动到最后一时,首先将游标移动到最后一行,然后再获取最后一行的行行,然后再获取最后

18、一行的行号,以便获得表中的记录数目。号,以便获得表中的记录数目。程序倒序输出程序倒序输出goods表中的记表中的记录,录,效果如图效果如图10.910.9。 第 18 页Statement stmt=con.createStatement(int type ,int concurrency); type的取值决定滚动的方式: ResultSet.TYPE_FORWORD_ONLY:结果集的游标只能向下移动。 ResultSet.TYPE_SCROLL_INSENSITIVE:结果集的游标可以上下移动,且当数据库变化时,当前结果集不变。 ResultSet.TYPE_SCROLL_SENSITI

19、VE:结果集的游标可以上下移动,且当数据库变化时,当前结果集同步改变。第 19 页Statement stmt=con.createStatement(int type ,int concurrency);Concurrency取值决定是否可以用结果集去更新数据库。 ResultSet.CONCUR_READ_ONLY 不能用结果集去更新数据库。 ResultSet.CONCUR_UPDATABLE 能用结果集去更新数据库。第 20 页ResultSet re=stmt.executeQuery(SQL语句语句);滚动查询经常用到的ResultSet类的方法:public boolean pr

20、evious()将游标向上移动,当移到结果集第一行之前时返回false。public boolean next()将游标向下移动,当移到结果集第后一行之后时返回false。public void beforeFirst()将游标移动到结果集第一行之前。public void first()将游标移动到结果集第一行。public void last()将游标移动到结果集第后一行。public boolean absolute(int row)将游标移动到参数指定的行,row可以是负数,表示倒数第row行public boolean isFirst()判断游标是否指向结果集的第一行。public

21、boolean isLast()判断游标是否指向结果集的第后一行。第 21 页10.4.3 条件查询条件查询 例子例子3 3,分别按商品号和价格查询记录。主类将查,分别按商品号和价格查询记录。主类将查询条件传递询条件传递QueryQuery类类的实例。的实例。程序运行效果如图程序运行效果如图10.1010.10。 第 22 页10.4.4 排序查询排序查询 可以在可以在SQLSQL语句中使用语句中使用ORDER BYORDER BY子语句对记录排序,子语句对记录排序,例如,按例如,按priceprice排序查询的排序查询的SQLSQL语句:语句: SELECT * FROM goods ORD

22、ER BY price 例子例子4 4中使用例子中使用例子3 3中的中的QueryQuery类类的实例分别按商品的实例分别按商品名称和价格排序名称和价格排序goodsgoods表中的全部记录。表中的全部记录。程序运行效果程序运行效果如图如图10.1110.11。 第 23 页10.4.5 模糊查询模糊查询 可以用可以用SQL语句操作符语句操作符LIKE进行模式般配,使用进行模式般配,使用“%”代替代替零个或多个字符,用一个下划线零个或多个字符,用一个下划线“_”代替一个字符,用代替一个字符,用abc代代替替a、b、c中的任何一个。比如,下述语句查询商品名称中含有中的任何一个。比如,下述语句查询

23、商品名称中含有“T”或或“宝宝”的记录:的记录: rs = sql.executeQuery(SELECT * FROM goods WHERE name LIKE T宝宝% ); 例子例子5中使用例子中使用例子3中中Query类类的实例模糊查询表中的记录。的实例模糊查询表中的记录。程序运行效果如图程序运行效果如图10.1210.12。 第 24 页10.5 更新、添加与删除操作更新、添加与删除操作 StatementStatement对象对象调用方法:调用方法: public int executeUpdate(String sqlStatement); 通过参数通过参数sqlStateme

24、ntsqlStatement指定的方式实现对数据库表中记录的指定的方式实现对数据库表中记录的更新、添加和删除操作。更新、添加和删除操作。 更新、添加和删除记录的更新、添加和删除记录的SQLSQL语法分别是:语法分别是: UPDATE SET = 新值新值 WHERE 例:UPDATE goods SET price =3009 WHERE name=海尔电视机。 INSERT INTO 表表(字段列表字段列表) VALUES (对应的具体的记录)或对应的具体的记录)或INSERT INTO 表表(VALUES (对应的具体的记录)对应的具体的记录) 例:例:INSERT INTO goods(

25、number,name,madeTime,price) VALUES (A009,手机,2010-12-20,3976) DELETE FROM WHERE 例例 DELETE FROM goods WHERE number = B002 例子例子6中,中,Example10_6.javaExample10_6.java,ModifyTable类能更新、插入类能更新、插入和删除表中的记录和删除表中的记录. . 第 25 页10.6 事务事务 10.6.1 事务及处理事务及处理 事务由一组事务由一组SQLSQL语句组成,所谓事务处理是指:语句组成,所谓事务处理是指:应用程序保证事务中的应用程序保

26、证事务中的SQLSQL语句要么全部都执行,语句要么全部都执行,要么一个都不执行。要么一个都不执行。 事务处理是保证数据库中数据完整性与一致事务处理是保证数据库中数据完整性与一致性的重要机制。例如银行系统的转账业务至少需性的重要机制。例如银行系统的转账业务至少需要两条要两条SQLSQL语句去修改语句去修改A A、B B帐户的余额,应用程帐户的余额,应用程序必须保证这两条序必须保证这两条SQLSQL语句要么全部执行,要么语句要么全部执行,要么全部都不执行。全部都不执行。 第 26 页10.6.2 JDBCJDBC事务处理步骤事务处理步骤 1 1使用setAutoCommit(boolean aut

27、oCommit)方法 和数据库建立一个连接对象后,比如con。那么con的提交模式默认是自动提交模式(执行的SQL语句立刻生效),为了能进行事 务 处 理 , 必 须 关 闭 c o n 的 这 个 默 认 设 置 。con.setAutoCommit(false); 2 2使用commit()方法 连接对象con调用commit()方法就是让事务中的SQL语句全部生效。 3 3使用rollback()方法 con调用rollback()方法的作用是撤消事务中成功执行过的SQL语句对数据库数据所做的更新、插入或删除操作,即撤消引起数据发生变化的SQL语句操作,将数据库中的数据恢复到commit()方法执行之前的状态。 例子例子7 7使用了事务处理将使用了事务处理将goodsgoods表中表中numbernumber字段是字段是“A001”A001”的的priceprice的值减少的值减少n n,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论