JDBC部分面试题

本文介绍了JDBC面试中常见的问题,包括操作数据库的步骤、Statement与PreparedStatement的区别、大数据量分页策略、数据库连接池的工作原理及实现、事务处理方法以及优化JDBC代码质量的建议。内容涉及了JDBC的基础知识和最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. JDBC操作数据库的步骤 ?

  1. 注册数据库驱动。
  2. 建立数据库连接。
  3. 创建一个Statement。
  4. 执行SQL语句。
  5. 处理结果集。
  6. 关闭数据库连接

 

 

2. JDBC中的Statement 和PreparedStatement,CallableStatement的区别?

区别:

  1. PreparedStatement是预编译的SQL语句,效率高于Statement。
  2. PreparedStatement支持?操作符,相对于Statement更加灵活。
  3. PreparedStatement可以防止SQL注入,安全性高于Statement。
  4. CallableStatement适用于执行存储过程。

3. JDBC中大数据量的分页解决方法?

最好的办法是利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容。

mysql语法:

 

oracle语法:

 

4. 说说数据库连接池工作原理和实现方案?

工作原理:

JAVA EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

实现方案:连接池使用集合来进行装载,返回的Connection是原始Connection的代理,代理Connection的close方法,当调用close方法时,不是真正关连接,而是把它代理的Connection对象放回到连接池中,等待下一次重复利用。

具体代码:

 

5. Java中如何进行事务的处理?

  1. 事务是作为单个逻辑工作单元执行的一系列操作。
  2. 一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务

Connection类中提供了4个事务处理方法:

  1. setAutoCommit(Boolean autoCommit):设置是否自动提交事务,默认为自动提交,即为true,通过设置false禁止自动提交事务;
  2. commit():提交事务;
  3. rollback():回滚事务.
  4. savepoint:保存点

注意:savepoint不会结束当前事务,普通提交和回滚都会结束当前事务的

6. 修改JDBC代码质量

下述程序是一段简单的基于JDBC的数据库访问代码,实现了以下功能:从数据库中查询product表中的所有记录,然后打印输出到控制台.该代码质量较低,如没有正确处理异常,连接字符串以”魔数”的形式直接存在于代码中等,请用你的思路重新编写程序,完成相同的功能,提高代码质量。

原来的代码:

 修改后的代码:

 

 

修改点:

  1. url、password等信息不应该直接使用字符串“写死”,可以使用常量代替
  2. catch中应该回滚事务,抛出RuntimeException也是回滚事务的一种方法
  3. 关闭资源

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值