一.单选题(共12题,22.8分)
1下列选项中,能够执行带参数占位符SQL语句的是()
- A、Statement
- B、ResultSet
- C、Connection
- D、PreparedStatement
正确答案: D
2下面选项中描述错误的是( )
- A、Statement的executeUpdate()方法会返回是否更新成功的boolean值
- B、Statement的executeUpdate()方法会返回值是int类型,含义是DML操作影响记录数
- C、Statement的executeQuery()方法会返回一个结果集
- D、Statement的execute ()方法会返回boolean值 ,含义是是否返回结果集
正确答案: A
答案解析:
Statement的executeUpdate()方法用于执行SQL中的insert、update、delete语句,该方法返回一个int类型的值,表示数据库中受该SQL语句影响的记录条数。
3使用Connection 的哪个方法可以建立一个PreparedStatement接口?( )
- A、createPrepareStatement()
- B、prepareStatement()
- C、createPreparedStatement()
- D、preparedStatement()
正确答案: B
4SELECT COUNT(*) FROM emp;这条SQL语句执行,如果员工表中没有任何数据,那么ResultSet中将会是()
- A、以上都选项都不对
- B、null
- C、不为null,但是没有数据
- D、有数据
正确答案: D
5下面关于JDBC驱动器API与JDBC驱动器关系的描述,正确的是()
- A、JDBC驱动器是接口,而JDBC驱动器API是实现类
- B、JDBC驱动器API内部包含了JDBC驱动器
- C、JDBC驱动器API是接口,而JDBC驱动器是实现类
- D、JDBC驱动器内部包含了JDBC驱动器API
正确答案: C
6下列选项,可用于存储结果集的对象是()
- A、PreparedStatement
- B、ResultSet
- C、Statement
- D、Connection
正确答案: B
7Statement接口中executeQuery()方法的返回值是()
- A、Boolean
- B、Result
- C、ResultSet
- D、int
正确答案: C
答案解析:
Statement接口中executeQuery()方法返回一个表示查询结果的ResultSet对象。
8下列选项中,关于Statement描述错误的是()
- A、获取Statement实现需要使用Connection的createStatement()方法
- B、Statement是PreparedStatement的子接口
- C、Statement是用来执行SQL语句的
- D、PreparedStatement能使用参数占位符,而Statement不行
正确答案: B
答案解析:
PreparedStatement是Statement的子接口
9以下选项中,关于PreparedStatement的说法错误的是()
- A、PreparedStatement可以有效的防止SQL注入
- B、PreparedStatement继承了Statement ,可以执行预编译的SQL语句
- C、PreparedStatement只能执行带问号占位符的预编译SQL,不能执行SQL语句
- D、PreparedStatement可以存储预编译的SQL语句,从而提升执行效率
正确答案: C
10如果为预编译SQL UPDATE emp SET ename=?,job=?,salary=? WHERE empno=? 的第三个问号赋值,那么正确的选项是()
- A、pst.setInt("3",2000);
- B、pst.setString("salary","2000");
- C、pst.setInt(3,2000);
- D、pst.setFloat("salary",2000);
正确答案: C
11以下操作数据库结束后关闭资源顺序合理的是()
- A、Connection->Statement(或PreparedStatement)->ResultSet
- B、Statement(或PreparedStatement)->ResultSet->Connection
- C、以上都错误
- D、ResultSet->Statement(或PreparedStatement)->Connection
正确答案: D
12以下选项中,有关Connection描述错误的是( )
- A、Connection是Java程序与数据库建立的连接对象,这个对象只能用来连接数据库,不能执行SQL语句。
- B、JDBC的数据库事务控制要靠Connection对象完成。
- C、Connection对象使用完毕后要及时关闭,否则会对数据库造成负担。
- D、只有MySQL和Oracle数据库的JDBC程序需要创建Connection对象,其他数据库的JDBC程序不用创建Connection对象就可以执行CRUD操作。
正确答案: D
二.多选题(共4题,7.6分)
1在JDBC编程中执行完下列SQL语句SELECT name, rank, serialNo FROM employee,能得到rs的第一列数据的代码是( )
- A、rs.getString("ename");
- B、rs.getString(1);
- C、rs.getString(0);
- D、rs.getString("name");
正确答案: BD
2下面关于 ResultSet接口中getXXX()方法的描述正确的是()
- A、可以通过字段的索引来获取指定的数据
- B、字段的索引是从1开始编号的
- C、字段的索引是从0开始编号的
- D、可以通过字段的名称来获取指定数据
正确答案: ABD
3下列选项有关ResultSet说法错误的是()
- A、如果Connection对象关闭,那么ResultSet也无法使用
- B、ResultSet是查询结果集对象,如果JDBC执行查询语句没有查询到数据,那么ResultSet将会是null值
- C、ResultSet有一个记录指针,指针所指的数据行叫做当前数据行,初始状态下记录指针指向第一条记录
- D、判断ResultSet是否存在查询结果集,可以调用它的next()方法
正确答案: BC
4下面选项中,属于JDBC实现的是()
- A、JDBC驱动管理器
- B、Java程序
- C、JDBC驱动器
- D、JDBC驱动器API
正确答案: ACD
三.填空题(共20题,38.0分)
1在编写JDBC应用程序时,必须要把指定数据库驱动程序或类库加载到【】中。
正确答案:
第一空:
classpath
2JDBC常用API 中,【】类用于加载JDBC驱动并且创建与数据库的连接。
正确答案:
第一空:
DriverManager
3Statement接口提供了最常见的执行SQL的方法是【】和【】。
正确答案:
第一空:
createQuery()
第二空:
createUpdate()
4【】是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问。
正确答案:
第一空:
JDBC
5加载JDBC驱动是通过调用【】方法实现的。
正确答案:
第一空:
java.lang.Class.forName()
6当批量更新对象时,采用【】创建对象效率较高,且在SQL语句中使用?占位符;采用【】创建则效率较低。
正确答案:
第一空:
preparedStatement
第二空:
Statement
7加载数据库驱动通常调用Class类的静态方法【】来实现。
正确答案:
第一空:
forName()
8Connection接口的【】方法用于创建一个PreparedStatement对象来将参数化的SQL语句发送到数据库。
正确答案:
第一空:
prepareStatement(String sql)
9通过Connection实例的createStatement()方法获得的接口对象【】,会把静态的SQL语句发送到数据库中编译执行,然后返回数据库的处理结果。
正确答案:
第一空:
Statement
10PreparedStatement是Statement的子接口,用于执行【】的SQL语句。
正确答案:
第一空:
预编译
11JDBC与数据库建立连接是通过调用 DriverManager类的静态方法 【】实现的。
正确答案:
第一空:
getConnection(url,username,password)
12JDBC通过Statement类所提供的方法,可以利用标准的SQL对数据库进行【】 、【】 、【】 操作。
正确答案:
第一空:
新增
第二空:
插入
第三空:
修改
13【】对象是executeQuery()方法的返回值,它被称为结果集,它通过一套getXXX方法提供了对这些行中数据的访问。
正确答案:
第一空:
ResultSet
14【】对象自动维护指向当前数据行的游标,每调用一次next() 方法,游标向下移动一行。
正确答案:
第一空:
ResultSet
15在JDBC中,事务操作成功后,系统将自动调用【】 方法 提交,否则调用rollback()回滚。
正确答案:
第一空:
commit()
16ResultSet接口中,能将游标移动到此 ResultSet 对象的最后一行的方法是【】。
正确答案:
第一空:
last()
17【】接口表示select语句得到的结果集,并将该结果集封装在一个逻辑表格中。
正确答案:
第一空:
ResultSet
18Statement接口的executeQuery(String sql)方法用于执行SQL的【】语句。
正确答案:
第一空:
select
19Statement接口的executeUpdate(String sql)方法用于执行SQL中的insert、【】和delete语句。
正确答案:
第一空:
update
20DriverManager中提供了一个【】方法来获取数据库连接。
正确答案:
第一空:
getConnection()
四.判断题(共16题,31.6分)
1为了保证在异常情况下也能关闭资源,需要在try...catch的finally代码块中统一关闭资源。
正确答案:√
答案解析:
为了保证在异常情况下也能关闭资源,需要在try...catch的finally代码块中统一关闭资源。
2每次操作数据库结束后都要关闭数据库连接,资源的关闭顺序与打开顺序相同。
正确答案:×
答案解析:
每次操作数据库结束后都要关闭数据库连接,资源的关闭顺序与打开顺序相反。
3JDBC对Java程序员而言是接口模型,对实现与数据库连接的服务提供商而言是API。
正确答案:×
答案解析:
JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。
4对于相同的SQL语句,Statement对象每次执行时,也都会对其进行编译。
正确答案:√
5ResultSet接口表示select查询语句得到的结果集,该结果集封装在一个逻辑表格中。
正确答案:√
6应用程序可以直接与不同的数据库进行连接,而不需要依赖于底层数据库驱动。
正确答案:×
答案解析:
应用程序与数据库连接需要依赖底层驱动。
7ResultSet对象自动维护指向当前数据行的游标,每调用一次next()方法,游标向下移动一行, 循环完毕后指回第一条记录。
正确答案:×
答案解析:
ResultSet对象自动维护指向当前数据行的游标,每调用一次next()方法,游标向下移动一行。如果下一行没有数据,返回false。
8Statement接口的executeUpdate(String sql)返回值是int,它表示数据库中受该SQL语句影响的记录的数目。
正确答案:√
9PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。
正确答案:√
答案解析:
PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。
10作为一种好的编程风格,应在不需要Statement对象和Connection对象时显式地关闭它们。
正确答案:√
11Statement接口的execute(String sql)返回值是boolean,它代表sql语句的执行是否成功。
正确答案:×
答案解析:
可用于执行任何SQL语句,返回一个boolean值,表明执行该SQL语句是否返回了查询结果。如果执行的SQL语句有查询结果,则返回true,否则返回false。
12当ResultSet的 Statement 关闭、重新执行或用于从多结果序列中获取下一个结果时,该ResultSet将被自动关闭。
正确答案:√
13如果我们想要取得ResultSet里的某一条记录,可以使用ResultSet的next()方法。
正确答案:√
14JDBC访问数据库后,不需要手动关闭数据库资源。
正确答案:×
答案解析:
JDBC访问数据库后,需要手动关闭数据库连接,释放资源,以重复利用资源。
15CallableStatement是PreparedStatement的子接口,用于执行SQL存储过程。
正确答案:×
16关闭资源时,按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源。
正确答案:√
答案解析:
关闭资源时,按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源。