版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/10/28,1,Java面向对象程序设计第2版第14章,配合第2版 例子源代码一起使用,Power point 制作:耿祥义 张跃平,JDBC 数据库操作,2020/10/28,2,主要内容 JDBC 连接数据库 查询操作 更新、添加与删除操作 查询Excel电子表格 使用预处理语句 事务 难点 使用预处理语句 事务,导读,本章将学习怎样使用Java提供的JDBC技术操作数据库 。,2020/10/28,3,14.1 Microsoft Access 数据库管理系统 14.1.1 建立数据库,建立一个名字为factory的数据库。操作步骤如下: 单击“开始”“所有程序”“Micros
2、oft Access”,在新建数据库界面选择“空Access数据库”,然后命名、保存新建的数据库,在这里我们命名的数据库是factory,保存在C:chapter14中。,2020/10/28,4,14.1.2 创建表,在factory管理的“表”的界面上选择“使用设计器创建表”,然后单击界面上的“设计”菜单,将出现相应的建表界面,我们建立的表是employee,该表的字段(属性)为:number(文本) name(文本) birthday(日期) salary(数字,双精度)。 其中,“number”字段为主键 。 在factory管理的“表”的界面上,用鼠标双击已创建的表可以为该表添加记录
3、。,2020/10/28,5,14.2 JDBC,JDBC(Java DataBase Connection)是Java数据库连接API。简单地说,JDBC能完成3件事: 与一个数据库建立连接。 向数据库发送SQL语句。 处理数据库返回的结果。,2020/10/28,6,14.3 连接数据库 14.3.1 连接方式的选择,和数据库建立连接的常用两种方式是:建立JDBCODBC桥接器和加载纯Java数据库驱动程序。使用JDBCODBC桥接器方式的机制是,应用程序只需建立JDBC和ODBC之间的连接,即所谓的建立JDBCODBC桥接器,而和数据库的连接由ODBC去完成。,使用JDBCODBC桥接器
4、连接数据库的3个步骤 建立JDBC-ODBC桥接器 建ODBC数据源 和ODBC数据源建立连接,2020/10/28,7,14.3.2 建立JDBC-ODBC桥接器,JDBC使用java.lang包中的Class类建立JDBC-ODBC桥接器。建立桥接器时可能发生异常,必须捕获这个异常,建立桥接器的代码是: try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) System.out.println(e); ,2020/10/28,8,14.3.3 ODBC数据源,1创建、修改或删除数据源
5、 选择“控制面板”“管理工具”“ODBC数据源”(某些window/xp系统,需选择“控制面板”“性能和维护”“管理工具”“ODBC数据源”)。 双击ODBC数据源图标,出现的界面显示了用户已有的数据源的名称。选择“系统DSN”或“用户DSN”,单击“添加”按钮,可以创建新的数据源;单击“配置”按钮,可以重新配置已有的数据源;单击“删除”按钮,可以删除已有的数据源。 2为数据源选择驱动程序 因为要访问Access数据库,选择Microsoft Acess Driver(*.mdb)。 3数据源名称及对应数据库的所在位置 在名称栏里为数据源起一个自己喜欢的名字,这里我们起的名字是star。这个数
6、据源就是指某个数据库。在“数据库选择”栏中选择一个数据库,这里我们选择的是C:chapter14下的factory.mdb数据库。,2020/10/28,9,14.3.4 建立连接,编写连接数据库代码不会出现数据库的名称,只能出现数据源的名字。 首先使用java.sql包中的Connection类声明一个对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个连接对象,建立连接时应捕获SQLException异常 : try Connection con=DriverManager.getConnection(“jdbc:odbc:数据源名字”, logi
7、n name, password ); catch(SQLException e) 例题14-1,2020/10/28,10,14.4 查询操作,对一个数据库中表进行查询操作的具体步骤如下。 1向数据库发送SQL查询语句 try Statement sql=con.createStatement(); catch(SQLException e ) 2处理查询结果 ResultSet rs=sql.executeQuery(SELECT * FROM employee); 表14.1给了出了ResultSet对象的若干方法。,2020/10/28,11,14.4.1 顺序查询,通过使用JDBC提
8、供的API,可以在查询之前知道表中的字段的个数和名字,步骤如下: 1.连接对象con调用getMetaData()方法可以返回一个DatabaseMetaData对象,例如: DatabaseMetaData metadata=con.getMetaData(); 2. Metadata对象再调用getColumns可以将表的字段信息以行列的形式存储在一个ResultSet对象中,例如: ResultSet tableMessage=metadata.getColumns(null,null,employee,null); 3. tableMessage对象调用next方法使游标向下移动一行(
9、游标的初始位置在第1行之前),然后tableMessage调用getXXX方法可以查看该行中列的信息,其中最重要的信息是第4列,该列上的信息为字段的名字。 例题14-2,2020/10/28,12,14.4.2 随机查询,需要在结果集中前后移动、显示结果集指定的一条记录或随机显示若干条记录等。这时,必须要返回一个可滚动的结果集。为了得到一个可滚动的结果集,需使用下述方法先获得一个Statement对象: Statement stmt=con.createStatement(int type ,int concurrency); 然后,根据参数的type、concurrency的取值情况,stm
10、t返回相应类型的结果集: ResultSet re=stmt.executeQuery(SQL语句); 滚动查询经常用到ResultSet的下述方法: public boolean previous():将游标向上移动 public void beforeFirst():将游标移动到结果集的初始位置。 public void afterLast():将游标移到结果集最后一行之后。 public void first():将游标移到结果集的第一行。 public void last():将游标移到结果集的最后一行。 public boolean isAfterLast():判断游标是否在最后一行
11、之后。 public boolean isBeforeFirst():判断游标是否在第一行之前 public boolean ifFirst():判断游标是否指向结果集的第一行。 public boolean isLast():判断游标是否指向结果集的最后一行。 public int getRow():得到当前游标所指行的行号.0 public boolean absolute(int row):将游标移到参数row指定的行号。例题14-3,2020/10/28,13,14.4.3 条件查询,在下面的例子4中QueryByNumber和QueryBySalary是例子2中Query类的子类,二
12、者分别能按雇员号和薪水查询记录。主类将查询条件传递QueryByNumber和QueryBySalary类的实例。 例题14-3,2020/10/28,14,14.4.4 排序查询,可以在SQL语句中使用ORDER BY子语句,对记录排序 。 按薪水排序查询的SQL语句: SELECT * FROM employee ORDER BY salary 例题14-5,2020/10/28,15,14.4.5 模糊查询,可以用SQL语句操作符LIKE进行模式般配,使用“%”代替0个或多个字符,用一个下划线“_”代替1个字符。下述语句查询姓氏是“张”或“李”的记录: rs=sql.executeQue
13、ry(“SELECT * FROM students WHERE 姓名 LIKE 张李% ”); 例题14-6,2020/10/28,16,14.5 更新、添加与删除操作,Statement对象调用方法: public int executeUpdate(String sqlStatement); 通过参数sqlStatement指定的方式实现对数据库表中记录的更新、添加和删除操作。 更新、添加和删除记录的SQL语法分别是: UPDATE SET = 新值 WHERE INSERT INTO 表(字段列表) VALUES (对应的具体的记录)或INSERT INTO 表(VALUES (对应的
14、具体的记录) DELETE FROM WHERE 例题14-7,2020/10/28,17,14.6 查询Excel电子表格,访问Exel电子表格和访问其它的数据库有所不同,假设有电子表格Goods.xls,见图14.17。 连接Excel电子表格的步骤如下。 1设置表 必须在电子表格中选出一工作区作为连接时使用的表。 2设置数据源 为数据源选择的驱动程序必须是:Microsoft Excel Driver。 例题14-8,2020/10/28,18,14.7 使用预处理语句,Java提供了更高效率的数据库操作机制,就是PreparedStatement对象,该对象被习惯地称作预处理语句对象。
15、,2020/10/28,19,14.7.1 预处理语句优点,预处理不仅减轻了数据库的负担,而且也提高了访问数据库的速度。 对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么con就可以调用prepareStatement(String sql)方法对参数sql指定的SQL语句进行预编译处理,生成该数据库地层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用下列方法都可以使得该地层内部命令被数据库执行 ResultSet executeQuery() ; boolean execute(); int executeUpdate();
16、 只要编译好了PreparedStatement对象,那么该对象可以随时地执行上述方法,显然提高了访问数据库的速度。 例题14-9,2020/10/28,20,14.7.2 使用统配符,在对SQL进行预处理时可以使用统配符“?”来代替字段的值,只要在预处理语句执行之前再设置统配符所表示的具体值即可。 例如: sql=con.prepareStatement(SELECT * FROM employee WHERE salary ? ); 那么在sql对象执行之前,必须调用相应的方法设置统配符“?”代表的具体值,比如: sql.setFloat(1,2389); 指定上述预处理SQL语句中统配符
17、“?”代表的值是2389 预处理语句设置统配符“?”的值的常用方法有: void setDate(int parameterIndex,Date x) void setDouble(int parameterIndex,double x) void setFloat(int parameterIndex,float x) void setInt(int parameterIndex,int x) void setLong(int parameterIndex,long x) void setString(int parameterIndex,String x) 例题14-10,2020/10/
18、28,21,14.8 事务 14.8.1 事务及处理,事务由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。 事务处理是保证数据库中数据完整性与一致性的重要机制。,2020/10/28,22,14.8.2 JDBC事务处理步骤,1使用setAutoCommit(boolean autoCommit)方法 和数据库建立一个连接对象后,比如con。那么con的提交模式是自动提交模式,为了能进行事务处理,必须关闭con的这个默认设置。con.setAutoCommit(false); 2使用commit()方法 连接对象con调用commit()
19、方法就是让事务中的SQL语句全部生效。 3使用rollback()方法 con调用rollback()方法的作用是撤消事务中成功执行过的SQL语句对数据库数据所做的更新、插入或删除操作,即撤消引起数据发生变化的SQL语句操作,将数据库中的数据恢复到commi()方法执行之前的状态。 例题14-11,2020/10/28,23,14.9 CachedRowSetImpl类,com.sun.rowset包提供了CachedRowSetImpl类,该类实现了CachedRowSet接口。CachedRowSetImpl对象可以保存ResultSet对象中的数据,而且CachedRowSetImpl对
20、象不依赖Connnection对象,这意味着一旦把ResultSet对象中的数据保存到CachedRowSetImpl对象中后,就可以关闭和数据库的连接。 将ResultSet对象rs中的数据保存到CachedRowSetImpl对象rowSet中的代码如下: rowSet.populate(rs); 例题14-12,2020/10/28,24,14. 10 Java的Derby内置数据库,JDK 1.6版本及之后的版本为Java平台提供了一个内置的数据库管理系统 ,简称Derby数据库。 应用程序内嵌数据库的特点是应用程序在其自身的代码中创建所需要的数据库,并使用该数据库。 应用程序连接De
21、rby数据库的步骤如下: 1将Java安装目录dblib下的derby.jar复制到Java运行环境的扩展中,即将该jar文件存放在JDK安装目录的jrelibext文件夹中。 2加载Derby数据库驱动程序: 加载Derby数据库驱动程序的代码是: Class.forName(org.apache.derby.jdbc.EmbeddedDriver).newInstance(); 其中的org.apache.derby包是derby.jar提供的,该包中的EmbeddedDriver类负责创建驱动数据的实例.加载Derby数据库驱动程序需要捕获ClassNotFoundException、InstantiationException、IllegalAccessException和SQLException异常。 3创建并连接数据库或连接已有的数据库 :创建名字是student的数据库,并与其建立连接(create取值是true)的代码是:Co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烟草厂特殊环境用电安全规范
- 旅游公司私企导游聘用合同
- 管理学校餐饮部员工合同
- 栅栏围墙钢结构施工合同范本
- 智能家居房产买卖合同范本格式
- 质量控制与市场营销
- 通信设备招投标管理操作指南
- 2022年大学林业工程专业大学物理下册期中考试试卷-含答案
- 2022年大学森林资源专业大学物理二期中考试试卷D卷-附解析
- 2022年大学航空航天专业大学物理二期末考试试题-含答案
- 2024年九年级化学上册 第6单元 碳和碳的氧化物教案 (新版)新人教版
- 2024详解新版《公司法》课件
- 医院法律、法规培训课件
- 2024年高考作文真题解读(立意+提纲+范文+总评)
- 美沙酮门诊管理新规制度
- 2024年河南省信阳市新县中考一模数学试题 【含答案解析】
- 正常与心梗心电图
- 2024年高考语文阅读之李娟散文专练全国解析版
- 国开2024《人文英语4》边学边练参考答案
- 10kV氧化锌(带脱离器)避雷器关键技术标准规范书
- DB32T4065-2021建筑幕墙工程技术标准
评论
0/150
提交评论