还剩2页未读,继续阅读
文本内容:
第15章课后习题参考答案.简述JDBC驱动程序的分类和各自特点答JDBC定义了4种不同的驱动程序,现分述如下类型1:JDBC-ODBCBridge在JDBC出现的初期,JDBC-ODBC桥显然是非常有实用意义的,通过JDBC-ODBC桥,开发人员可以使用JDBC来存取ODBC数据源不足的是,他需要在客户端安装ODBC驱动程序,换句话说,必须安装MicrosoftWindows的某个版本使用这一类型你需要牺牲JDBC的平台独立性另外,ODBC驱动程序还需要具有客户端的控制权限类型2:JDBC-nativedriverbridgeJDBC本地驱动程序桥提供了一种JDBC接口,它建立在本地数据库驱动程序的顶层,而不需要使用ODBCJDBC驱动程序将对数据库的API从标准的JDBC调用转换为本地调用使用此类型需要牺牲JDBC的平台独立性,还要求在客户端安装一些本地代码类型3:JDBC-networkbridgeJDBC网络桥驱动程序不再需要客户端数据库驱动程序它使用网络上的中间服务器来存取数据库这种应用使得以下技术的实现有了可能,这些技术包括负载均衡、连接缓冲池和数据缓存等由于第3种类型往往只需要相对更少的下载时间,具有平台独立性,而且不需要在客户端安装并取得控制权,所以很适合于Internet上的应用类型4:PureJavadriver第4种类型通过使用一个纯Java数据库驱动程序来执行数据库的直接访问此类型实际上在客户端实现了2层结构要在N-层结构中应用,一个更好的做法是编写一个EJB让它包含存取代码并提供一个对客户端具有数据库独立性的服务.说明数据源的作用答数据源是一种用来提高数据库连接性能的常规手段,数据源会负责维持一个数据库连接池,当程序创建数据源实例时,系统会一次性地创建多个数据库连接,并把这些数据库连接保存在连接池中当程序需要进行数据库访问时,无须重新获得数据库连接,而是从连接池中取出一个空闲的数据库连接,当程序使用数据库连接访问结束后,无须关闭数据库连接,而是将数据库连接归还给连接池即可通过这种方式就可比避免频繁地获取数据库连接,关闭数据库连接所导致的性能下降.ResultSet类常量有哪些?各有什么意义答ResultSet中的几个静态常量TYPE_FORWARD_ONLY=1003TYPE_SCROLLJNSENSITIVE=1004TYPE_SCROLL_SENSITTVE=1005CONCUR_READ_ONLY=1007CONCUR_UPDATABLE=1008这几个常量常用于这两个方法createStatementResultSet.TYPE_SCROLL_INSENSITIVEResultSet.CONCUR_READ_ONLY;prepareStatementStringsqlintresultSetTypeintresultSetConcurrency;296这两个方法都属于java.sql.Connection在实际开发中,我们可以利用这些参数来方便地移动指针.什么是数据库元数据?有什么用途?答按照传统的定义,元数据Metadata是关于数据的数据在数据库系统中,元数据可以帮助数据库管理员和数据库的开发人员非常方便地找到他们所关心的数据;元数据是描述数据库内数据的结构和建立方法的数据,可将其按用途的不同分为两类技术元数据TechnicalMetadata和业务元数据BusinessMetadatao
5.如何提高数据库存取效率?有哪些技术?答a.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引b.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如selectidfromtwherenumisnull可以在num上设置默认值0确保表中num列没有null值,然后这样查询selectidfromtwherenum=0c.并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段sexmale、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用d.索引并不是越多越好,索引固然可以提高相应的select的效率,但同时也降低了insert及update的效率,因为insert或update时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要e.应尽可能的避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源若应用系统需要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引.简述什么是编译预处理举例说明其使用方法答:PreparedStatement始于编译预处理有关的类,是Statement的一个子类,它与Statement类的一个重要区别是用Statement定义的语句是一个功能明确而具体的语句,而用PraparedStatement类定义的SQL语句中则包含一个或者多个?占位符,他们对应多个IN参数,带占位符的SQL语句可以被编译,而在后续执行过程中,这些占位符需要使用set方法设置为具体的IN参数值,再将这些语句发送到数据库获得执行给出若干编译预处理语句实例说明PreparedStatement的用法1创建对象PraparedStatementpstmt=conn.prapareStatementupdatetablelset=wherey=;1对象pstmt中包含了语句updatetablelsetx=wherey=>该语句被发送到DBMS进行编译预处理,为执行做准备2为每个IN参数设定参数值,即每个占位符?对应一个参数值设定参数值是通过调用setXxx方法实现的,其中Xxx是与参数相对应的类型,加入上面例子中的参数类型为long则用下面的代码为参数设定值pstmt.setLongl123456789;pstmt.setLong2987654321;这里的12是与占位符从左到有的次序相对应的序号,他们不是从0开始计数3执行语句Pstmt.executeUpdate;
1.什么是保存点?答开启事务后在执行语句后面打几个点,我们调用rollback语句就会回滚到指定的点而不是回到事务执行之前的样子.什么是事务?事务有哪些特点?答指访问并可能更新数据库中各种数据项的一个程序执行单元unit事务通常由高级数据库操纵语言或编程语言如SQLC++或Java书写的用户程序的执行所引起,并用形如begintransaction和endtransaction语句或函数调用来界定事务由事务开始begintransaction和事务结束endtransaction之间执行的全体操作组成事务应该具有4个属性原子性、一致性、隔离性、持久性这四个属性通常称为ACID特性原子性atomicity一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做一致性consistency事务必须是使数据库从一个一致性状态变到另一个一致性状态一致性与原子性是密切相关的隔离性isolation一个事务的执行不能被其他事务干扰即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰持久性durabilityo持久性也称永久性permanence指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的接下来的其他操作或故障不应该对其有任何影响.项目练习建一数据库,输入多于200条记录然后编程浏览数据要求1用表显示数据2要求分页显示每页设置翻页的按钮,使能翻到上一页、下一页、第一页、最后一页,并显示总页数和当前页页号答importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;publicclassInsertRecords{privateConnectionconnect{//SQLiteconnectionstringStringurl=Hjdbc:sqlite:D:/software/sqlite/java-sqlite.dbn;Connectionconn=null;tryconn=DriverManager.getConnectionurl;}catchSQLExceptione{System.out.printlne.getMessage;returnconn;publicvoidinsertStringnamedoublecapacity{Stringsql=INSERTINTOemployeesnamecapacityVALUES”;tryConnectionconn二this.connect;PreparedStatementpstmt=conn.preparestatementsql;pstmt.setStringlname;pstmt.setDouble2capacity;pstmt.executeUpdate;}catchSQLExceptione{System.out.printlne.getMessage;publicstaticvoidmainString[]args{InsertRecordsapp=newInsertRecords;//insertthreenewrowsforinti=0;i200;i++app.insertnHarbinn4-i30000;System.out.printlnnInsertdatafinished.1;。