Java程序设计教程(第2版)课后习题及答案15课后习题.docx

上传人:太** 文档编号:95564940 上传时间:2023-08-25 格式:DOCX 页数:4 大小:16.59KB
返回 下载 相关 举报
Java程序设计教程(第2版)课后习题及答案15课后习题.docx_第1页
第1页 / 共4页
Java程序设计教程(第2版)课后习题及答案15课后习题.docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《Java程序设计教程(第2版)课后习题及答案15课后习题.docx》由会员分享,可在线阅读,更多相关《Java程序设计教程(第2版)课后习题及答案15课后习题.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第15章课后习题参考答案1 .简述JDBC驱动程序的分类和各自特点。答:JDBC定义了 4种不同的驱动程序,现分述如下:类型 1: JDBC-ODBC Bridge在JDBC出现的初期,JDBC-ODBC桥显然是非常有实用意义的,通过JDBC-ODBC桥, 开发人员可以使用JDBC来存取ODBC数据源。不足的是,他需要在客户端安装ODBC 驱动程序,换句话说,必须安装Microsoft Windows的某个版本。使用这一类型你需要牺 牲JDBC的平台独立性。另外,ODBC驱动程序还需要具有客户端的控制权限。类型 2: JDBC-native driver bridgeJDBC本地驱动程序桥提供

2、了一种JDBC接口,它建立在本地数据库驱动程序的顶层, 而不需要使用ODBC。JDBC驱动程序将对数据库的API从标准的JDBC调用转换为本 地调用。使用此类型需要牺牲JDBC的平台独立性,还要求在客户端安装一些本地代码。类型 3: JDBC-network bridgeJDBC网络桥驱动程序不再需要客户端数据库驱动程序。它使用网络上的中间服务器来 存取数据库。这种应用使得以下技术的实现有了可能,这些技术包括负载均衡、连接缓 冲池和数据缓存等。由于第3种类型往往只需要相对更少的下载时间,具有平台独立性, 而且不需要在客户端安装并取得控制权,所以很适合于Internet上的应用。类型 4: Pu

3、re Java driver第4种类型通过使用一个纯Java数据库驱动程序来执行数据库的直接访问。此类型实际 上在客户端实现了 2层结构。要在N-层结构中应用,一个更好的做法是编写一个EJB, 让它包含存取代码并提供一个对客户端具有数据库独立性的服务。2 .说明数据源的作用。答:数据源是一种用来提高数据库连接性能的常规手段,数据源会负责维持一个数据库 连接池,当程序创建数据源实例时,系统会一次性地创建多个数据库连接,并把这些数 据库连接保存在连接池中。当程序需要进行数据库访问时,无须重新获得数据库连接, 而是从连接池中取出一个空闲的数据库连接,当程序使用数据库连接访问结束后,无须 关闭数据库连

4、接,而是将数据库连接归还给连接池即可。通过这种方式就可比避免频繁 地获取数据库连接,关闭数据库连接所导致的性能下降。3 . ResultSet类常量有哪些?各有什么意义。答:ResultSet中的几个静态常量:TYPE_FORWARD_ONLY= 1003TYPE_SCROLLJNSENSITIVE= 1004TYPE_SCROLL_SENSITTVE= 1005CONCUR_READ_ONLY= 1007CONCUR_UPD ATABLE= 1008这几个常量常用于这两个方法:createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSe

5、t.CONCUR_READ_ON LY);prepareStatement(String sql, int resultSetType, int resultSetConcurrency);296这两个方法都属于java.sql.Connection在实际开发中,我们可以利用这些参数来方便地移动指针。4 .什么是数据库元数据?有什么用途?答:按照传统的定义,元数据(Metadata)是关于数据的数据。在数据库系统中,元数据可以帮助数据库管理员和数据库的开发人员非常方便地找到他 们所关心的数据;元数据是描述数据库内数据的结构和建立方法的数据,可将其按用途 的不同分为两类:技术元数据(Techni

6、cal Metadata)和业务元数据(Business Metadata)o 5.如何提高数据库存取效率?有哪些技术?答:a.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及 的列上建立索引。b.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引 而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确 保表中num列没有null值,然后这样查询:select id from t where num=0c.并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的

7、,当索引列有 大量数据重复时,查询可能不会去利用索引,如一表中有字段sex, male、female几乎各 一半,那么即使在sex上建了索引也对查询效率起不了作用。d.索引并不是越多越好,索引固然可以提高相应的select的效率,但同时也降低了 insert及update的效率,因为insert或update时有可能会重建索引,所以怎样建索引 需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑 一些不常使用到的列上建的索引是否有必要。e.应尽可能的避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序, 一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当

8、大的资源。若应用系统需 要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引。6 .简述什么是编译预处理。举例说明其使用方法。答:PreparedStatement始于编译预处理有关的类,是Statement的一个子类,它与Statement 类的一个重要区别是:用Statement定义的语句是一个功能明确而具体的语句,而用 PraparedStatement类定义的SQL语句 中则包含一个或者多个?占位符,他们对应多个 IN参数,带占位符的SQL语句可以被编译,而在后续执行过程中,这些占位符需要使 用set方法设置为具体的IN参数值,再将这些语句发送到数据库获得执行。给出若干编译预处理语

9、句实例说明PreparedStatement的用法(1)创建对象PraparedStatement pstmt = conn.prapareStatement(update tablel set=? where y=?);1对象pstmt中包含了语句update tablel set x=? where y=?该语句被发送到DBMS进行编 译预处理,为执行做准备(2)为每个IN参数设定参数值,即每个占位符?对应一个参数值。设定参数值是通过调 用setXxx方法实现的,其中Xxx是与参数相对应的类型,加入上面例子中的参数类型为 long,则用下面的代码为参数设定值。pstmt.setLong(l

10、 ,123456789);pstmt.setLong(2,987654321);12这里的1, 2是与占位符从左到有的次序相对应的序号,他们不是从0开始计数。(3)执行语句Pstmt.executeUpdate();17 .什么是保存点?答:开启事务后在执行语句后面打几个点,我们调用rollback语句就会回滚到指定的点。 而不是回到事务执行之前的样子。8 .什么是事务?事务有哪些特点?答:指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级 数据库操纵语言或编程语言(如SQL, C+或Java)书写的用户程序的执行所引起,并 用形如begin transactio

11、n和end transaction语句(或函数调用)来界定。事务由事务开始 (begin transaction)和事务结束(end transaction)之间执行的全体操作组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID 特性。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做, 要么都不做。一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。 一致性与原子性是密切相关的。隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使 用的数据对并发的

12、其他事务是隔离的,并发执行的各个事务之间不能互相干扰。持久性(durability)o持久性也称永久性(permanence),指一个事务一旦提交,它对数 据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。9 .项目练习:建一数据库,输入多于200条记录。然后编程浏览数据。要求:(1)用表显示数据。(2)要求分页显示。每页设置翻页的按钮,使能翻到上一页、下一页、第一页、 最后一页,并显示总页数和当前页页号。答:import java.sql.Connection;import java.sql.DriverManager;import j ava. sql. Pre

13、paredS tatement;import j ava.sql. SQLException;public class InsertRecords private Connection connect() / SQLite connection stringString url = Hjdbc:sqlite:D:/software/sqlite/java-sqlite.dbn;Connection conn = null;try (conn = DriverManager.getConnection(url); catch (SQLException e) System.out.println

14、(e.getMessage();)return conn;)public void insert(String name, double capacity) String sql = INSERT INTO employees(name, capacity) VALUES(?,?)”;try (Connection conn 二 this.connect();PreparedStatement pstmt = conn.prepares tatement(sql);pstmt.setString(l, name);pstmt.setDouble(2, capacity);pstmt.executeUpdate(); catch (SQLException e) System.out.println(e.getMessage();)public static void main(String args) InsertRecords app = new InsertRecords();/ insert three new rowsfor(int i=0;i200;i+)app.insert(nHarbinn4-i, 30000);System.out.println(nInsert data finished.1);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁