JDBC面试题 下载本文

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 13 14 15 年份 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 季度(单位:万吨) 一 6 9 13 15 18 22 23 25 30 29 30 29 31 33 34 二 7 12 14 18 20 24 26 32 38 39 39 42 43 45 46 三 9 13 17 19 24 29 32 37 42 50 51 55 54 58 60 四 8 10 13 14 19 23 24 26 30 35 37 38 41 42 45 合计 30 44 57 66 81 98 105 120 140 153 157 164 169 178 185 编写程序完成如下要求:

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

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

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

4. 利用数据表中最近四年的数据预测未来五年中每年啤酒的产量数据(四个季度和总产

量),输出到控制台上面。

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

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

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