JSP企业面试题整理(5)
7-2 图示JDBC的工作原理,并列举常用的对象。(企业笔试题)
建立是建立与数据库之间的连接,也就是创建一个Connection的实例。DriverManager类的getConnection()方法将建立数据库的连接:
Statement对象用于将SQL语句发送到数据库中。存在3种Statement对象:(1)Statement;(2)PreparedStatement(从Statement继承而来);(3)CallableStatement(从PreparedStatement继承而来)。
ResultSet包含符合SQL语句执行结果所有行,并且它通过一套get方法提供了对这些行中数据的访问
7-3 如图7-16,要求:查找 “张三”选择所有课程的名称,写出SQL语句。(企业笔试题)
SELECT c.cname FROM sc a, student b, course c
WHERE a.cno=c.cno
AND a.sno=b.sno and b.sname ='张三'
7-4 下面的代码段是否正确?请说明。(企业笔试题)
pst = conn.prepareStatement("INSERT INTO grade(学号) VALUES (?)");
for (int i = 101; i < 111; i++) {
pst.setInt(1, i);
pst.addBatch();
}
pst.execute ();
}
错,pst.executeBatch();
7-5 简述事务的基本概念,如何在JDBC中实现事务?
事务是一些事件的集合,执行一条SQL语句可以理解成一个事件。事务中包含多个事件,如果每一个事件都能执行成功的时候,事务才执行,如果有任何一个事件不能成功执行,事务的其他事件也不被执行
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
try {
stmt.executeUpdate(strSQL1);
stmt.executeUpdate(strSQL2);
conn.commit();
}
catch (Exception e) {
conn.rollback();
e.printStackTrace();
}
finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
conn.setAutoCommit(defaultCommit);
7-6 结果集类型和结果集并发性各有几种情况,有什么作用。
决定这个Statement对象创建的ResultSet对象是否可以滚动,还可以指定结果集是否对数据库中的修改敏感。使用ResultSet类中的int常量来表示结果集类型,结果集类型有3种:
l ResultSet.TYPE_FORWORD_ONLY:指定ResultSet对象是不可滚动,这是默认值。
l ResultSet.TYPE_SCOLL_INSENSITIVE:指定ResultSet对象是可滚动的,但是对数据库中修改不敏感。
l ResultSet.TYPE_SCOLL_SENSITIVE:指定ResultSet对象是可滚动的,而且对数据库的修改敏感。
结果集的并发性(Concurrency)决定ResultSet对象是否可以修改数据库中的行。可以使用ResultSet类中定义的int常量来指定结果集的并发性。
l ResultSet.CONCUR_READ_ONLY,指定ResultSet对象不能修改数据库,默认值。
ResultSet.CONCUR_UPDATABLE,指定ResultSet对象可以修改数据库。