JavaWeb面试题之JDBC
2018-08-27 本文已影响18人
空城空忆亦空心
<说明:题目内容收集于网络,答案是参考别人解答以及自己的理解,纯手敲。如果有疑问或者错误,可以直接指出哟,有时间持续更新,也非常欢迎投稿>
1.什么是JDBC
JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库。JDBC接口及相关类在java.sql包和javax.sql包里。我们可以用它来连接数据库,执行SQL查询,存储过程,并处理返回的结果。
2.原生jdbc操作数据库流程
- 1.加载数据库连接驱动
Class.forName(...); - 2.获取数据连接对象
Connection conn = DriverManger.getConnection(...); - 3.3.获取传输器(语句对象)
会话对象有两种Statement和PreparedStatement
Statement st = conn.createStatement();
PreparedStatement ps = conn.prepareStatement(...) - 4.执行语句
如果是Statement对象
ResultSet rs = st.executeQuery(...); 或者 int i = st.executeUpdate();
如果是PreparedStatement对象,需要先设置参数
int i = ps.executeUpdate(); 或者 ResultSet resultSet = ps.executeQuery(); - 5.处理结果集
根据执行语句后返回的结果来处理结果集,一般DML操作不需要处理结果集,DQL才需要,通过ResultSet对象的API操作
while (rs.next()){ ... } - 6.关闭资源
rs.close()、st.close()、conn.close() 注意关闭顺序以及处理异常
3.JDBC中的Statement 和PreparedStatement的区别?
- PreparedStatement在执行之前会进行预编译,效率高于Statement
- PreparedStatement支持?占位符,使得程序可读性大大提高
- PreparedStatement能够有效防止SQL注入
4.数据库连接池工作原理
在服务器启动的时候会先创建一定数量的连接对象存放在连接池中,当一个线程需要使用连接对象的时候,从连接池中请求一个空闲的连接,使用完毕之后,并不会把连接关闭,而是还给连接池,在系统关闭的时候,会断开所有连接并且释放连接占用的资源
5.使用连接池的优势
- 系统响应速度加快
没有使用连接池之前,在请求数量多的情况下,大量的创建和销毁连接对象,耗费大量的时间,使用连接池之后,不用频繁的创建连接池对象,节约可了大量的时间 - 资源利用率高
使用连接池之后,在线程使用完连接对象之后并不会关闭连接对象,而是把连接对象还给连接池供下一次使用,大大提高资源利用率