JDBC练习题 下载本文

一、选择题

1. 有关JDBC的选项正确的是哪一个?

A. JDBC是一种被设计成通用的数据库连接技术,JDBC技术不光可以应用在Java程

序里面,还可以用在C++这样的程序里面。

B. JDBC技术是SUN公司设计出来专门用在连接Oracle数据库的技术,连接其他的

数据库只能采用微软的ODBC解决方案

C. 微软的ODBC和SUN公司的JDBC解决方案都能实现跨平台使用,只是JDBC的性能

要高于ODBC

D. JDBC只是个抽象的调用规范,底层程序实际上要依赖于每种数据库的驱动文件 2. 选择JDBC可以执行的语句(多选) A. DDL B. DCL C. DML D. 以上都可以

3. 选择Java程序开发中推荐使用的常用数据库(多选) a. Oracle

b. SQL Server 2000 c. MySQL d. DB2

4. 哪个不是JDBC用到的接口和类? a. System b. Class c. Connection d. ResultSet

5. 使用Connection 的哪个方法可以建立一个PreparedStatement接口?

A. createPrepareStatement() B. prepareStatement()

C. createPreparedStatement()

D. preparedStatement() 6. 下面的描述正确的是什么?

A. PreparedStatement继承自Statement B. Statement继承自PreparedStatement C. ResultSet继承自Statement

D. CallableStatement继承自PreparedStatement 7. 下面的描述错误的是什么?

A. Statement的executeQuery()方法会返回一个结果集

B. Statement的executeUpdate()方法会返回是否更新成功的boolean值 C. 使用ResultSet中的getString()可以获得一个对应于数据库中char类型的

D. ResultSet中的next()方法会使结果集中的下一行成为当前行 8. 如果数据库中某个字段为numberic型,可以通过结果集中的哪个方法获取?

A. getNumberic() B. getDouble() C. getBigDecimal () D. getFloat()

9. 在Jdbc中使用事务,想要回滚事务事务的方法是什么?

A. Connection的commit() B. Connection的setAutoCommit() C. Connection的rollback() D. Connection的close()

10. 在JDBC编程中执行完下列SQL语句SELECT name, rank, serialNo

FROM employee,能得到rs的第一列数据的代码是哪两个? A. rs.getString(0); B. rs.getString(\C. rs.getString(1);

D. rs.getString(\

11. 下面关于PreparedStatement的说法错误的是什么

A. PreparedStatement继承了Statement B. PreparedStatement可以有效的防止SQL注入 C. PreparedStatement不能用于批量更新的操作

D. PreparedStatement可以存储预编译的Statement,从而提升执行效率 12. 下面的选项加载MySQL驱动正确的是哪一个?

A. Class.forname(\B. Class.forname(\C. Class.forname(\D. Class.forname(\13. 下面的选项加载MySQL驱动正确的是哪一个?

A. Class.forname(\B. Class.forname(\C. Class.forname(\D. Class.forname(\14. 下面代码加载Oracle驱动正确的是哪一个?

A. DriverManager.register(\B. DriverManager.forname(\C. DriverManager.load(\

D. DriverManager.newInstance(\15. 有关Connection描述错误的是哪一个?

A. Connection是Java程序与数据库建立的连接对象,这个对象只能用来连接

数据库,不能执行SQL语句。

B. JDBC的数据库事物控制要靠Connection对象完成。

C. Connection对象使用完毕后要及时关闭,否则会对数据库造成负担。 D. 只用MySQL和Oracle数据库的JDBC程序需要创建Connection对象,其他

数据库的JDBC程序不用创建Connection对象就可以执行CRUD操作。

16. 下面有关JDBC事物的描述正确的是哪一个?

A. JDBC事物默认为自动提交,没执行一条SQL语句就会开启一个事物,执行完毕

之后自动提交事物,如果出现异常自动回滚事物。

B. JDBC的事物不同于数据库的事物,JDBC的事物依赖于JDBC驱动文件,拥有

独立于数据库的日志文件,因此JDBC的事物可以替代数据库事物。 C. 如果需要开启手动提交事物需要调用Connection对象的start()方法。 D. 如果事物没有提交就关闭了Connection连接,那么JDBC会自动提交事物。 17. 下列的预编译SQL哪一个是正确的?

A. SELECT * FROM ?; B. SELECT ?,?,? FROM emp ;

C. SELECT * FROM emp WHERE salary>(?) D. 以上都不对

18. 能执行预编译SQL的是哪一个选项?

A. Statement

B. PreparedStatement C. PrepareStatement D. 以上都不是

19. 如果为下列预编译SQL的第三个问号赋值,那么正确的选项是哪一个?

UPDATE emp SET ename=?,job=?,salary=? WHERE empno=?; A. pst.setInt(\B. pst.setInt(3,2000);

C. pst.setFloat(\D. pst.setString(\20. 有关PreparedStatement说法正确的是哪一个?

A. 该对象只能执行带问号占位符的预编译SQL,不能执行SQL语句。 B. 该对象执行的时候,只能执行查询语句,其他预编译SQL语句只能由

Statement执行。

C. 该对象因为只能执行查询语句,所以该对象不能用在JDBC事物中。 D. 该对象与一条SQL预编译语句绑定,不能执行其他预编译SQL语句。 21. 有关预编译SQL的有点说法错误的是哪一个?

A. 预编译SQL可以被PreparedStatement反复执行

B. 预编译SQL语句在PreparedStatement对象创建之后就被传递给数据库解

析,之后PreparedStatement执行预编译的时候,其实传递给数据库的只有占位符的参数。如果需要批量插入1000条记录的时候,预编译SQL只被数据库解析一次,其余都是数据库接受参数数据然后执行,这样的速度大为提高。 C. 预编译SQL的安全性好,可以抵御数据库脚本注入攻击,而这却是Statement

所不具备的。

D. 预编译SQL的占位符既可以替代数据表,也可以替代表达式的数据,甚至是子

查询语句。

22. 下列选项有关ResultSet说法错误的是哪一个?

A. ResultSet是查询结果集对象,如果JDBC执行查询语句没有查询到数据,那

么ResultSet将会是null值。

B. 判断ResultSet是否存在查询结果集,可以调用它的next()方法。 C. 如果Connection对象关闭,那么ResultSet也无法使用。

D. 如果一个事物没有提交,那么ResultSet中是看不到事物过程中的临时数据。 23. SELECT COUNT(*) FROM emp;这条SQL语句执行,如果员工表中没有任何数据,

那么ResultSet中将会是什么样子? A. null B. 有数据

C. 不为null,但是没有数据 D. 以上都选项都不对

24. 下面选项的MySQL数据库URL正确的是哪一个?

A. jdbc:mysql://localhost/company B. jdbc:mysql://localhost:3306:company C. jdbc:mysql://localhost:3306/company D. jdbc:mysql://localhost/3306/company

25. 编写JDBC的时候下列选项哪一个错误的使用了某个包的类?

A. java.sql.Connection B. java.sql.Statement

C. java.sql.PreparedStatement D. java.sql.Driver 二、编程题

多年以来,我国的啤酒生产企业一直是群雄割据、各自为战的局面。各地都有自己的生产企业,它们受到地方主义的保护,企业规模小,经营业绩不佳,抵御市场风险的能力差。近几年来,这种格局正在被打破,国内的一些啤酒巨头,如青岛啤酒、燕京啤酒等,开始进行跨地区的大规模重组,对市场进行重新整合,逐步扩大企业的生产规模,形成新的市场竞争优势,比如,青岛啤酒目前在国内已有48家生产企业。

啤酒的生产和销售所需的时间相对也比较短,库存量比较低。原因是啤酒在短时间内可能会变质,而库存费用和生产费用相对也比较高。要减少库存量,又要保持较强的市场竞争能力,就需要对生产和需求量的变化做出迅速反应。这就要求对需求量做出科学的预测,以作为制定下一年度生产计划的依据。

宁波一家啤酒生产企业现正着手制定2009年的生产计划,这就需要对市场需求量做出预测,作为制定计划的参考依据。经理室要求财务部负责测算工作,并提出预测数据。计划财务部认为企业最近十五年的销售数据对预测有用,于是找来企业历年的销售数据如下表: 序 号 1 2 3 4 5 6 7 8 9 10 11 12 年 份 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 季 度 (单位:万吨) 一 6 9 13 15 18 22 23 25 30 29 30 29 二 7 12 14 18 20 24 26 32 38 39 39 42 三 9 13 17 19 24 29 32 37 42 50 51 55 四 8 10 13 14 19 23 24 26 30 35 37 38 合 计 30 44 57 66 81 98 105 120 140 153 157 164 13 14 15 2007 2008 2009 31 33 34 43 45 46 54 58 60 41 42 45 169 178 185 编写程序完成如下要求:

1. 编写JDBC程序创建数据output表,表结构如下

列名 num year q1 数据类型 number(10) 主键 是 非空 是 是 唯一 是 索引 是 备注 序号 年份 第一季产量 number(4) number(10) number(10) number(10) number(10) number(10) q2 q3 q4 total 是 是 是 是 第二季产量 第三季产量 第四季产量 年产量 2. 编写JDBC程序将表1中的数据插入到数据库,要求使用整体性事务,不是没插入一条提交一次事务。

3. 编写JDBC程序读取数据库中的数据,在控制台输出年增长量的平均值

4. 利用数据表中最近四年的数据预测未来五年中每年啤酒的产量数据(四个季度和总产量),输出到控制台上面。

5. 用户在控制台上面输入一个任意的年份,将该年的记录打印到控制台上面,需要输出年份、四个季度的产量和年总产量

(1) 如果用户输入的是1995年以前的年份,控制台输出“没有数据”

(2) 如果用户输入的是1995-2009年之间的年份,输出的数据从数据库中查询 (3) 如果输入的是2009年以后的年份,输出的数据是预测的数据(参见第四题的思路)