JDBC连接池,Statement,PerparedStatement区别,ResultSet

来源:互联网 发布:婴儿肥 知乎 编辑:程序博客网 时间:2024/06/02 07:08

一.连接池(数据源)
1.DriverManager的问题

每次调用它都创建一个新连接,它没有复用连接它没有管理连接的上限,并发数过大时会导致数据库崩溃

2.连接池的作用

连接池会存储一批连接,并复用这些连接连接池可以管理连接的上限,避免数据库崩溃

3.常用连接池

DBCPC3P0

4.工作场景

>>创建连接池对象时,连接池会自动创建一批(可配)连接并标记为空闲>>用户调用连接池时,连接池会返回一个连接给用户,并将连接标记为占用>>用户使用完连接后,将连接归还给连接池,连接池会清空连接,并标记为空闲>>当连接池发现连接快不够用(可配)时,它会再次创建一批(可配)空闲连接>>当连接数达到上限(可配)时,连接池会让新的用户等待>>当高峰期过后,连接池会回收一批(可配)空闲连接

5.如何使用连接池

sun规定了连接池的接口: DataSourceDBCP提供的实现类是: BasicDataSource 

图示:
这里写图片描述

1.设置工具类(DBUtil)加载配置文件(配置连接池的相关参数),使用静态块加载资源。
2.静态块加载资源后,创建连接池对象。
3.工具类中建立获取连接对象方法供使用者调用
4.使用者调用方法获取连接对象

二.Statement和PreparedStatement(面试题)

1.它们的联系

都是用来执行SQL的PreparedStatement extends Statement

2.它们的区别

Statement适合执行静态(无条件)SQLPreparedStatement适合执行动态(有条件)SQL

3.Statement工作过程
这里写图片描述

4.PreparedStatement工作过程
这里写图片描述

5.PreparedStatement可以避免注入攻击

这里写图片描述

三.结果集(ResultSet)
1.ResultSet

获取参数的方法,参考API

2.ResultSetMetaData(结果集元数据)

Meta: 元, 即根本/本质MetaData: 元数据, 即数据的概述(描述信息)ResultSetMetaData: 结果集元数据, 即结果集的描述信息该对象中存储了结果集的描述信息

个别方法:

    getColumnCount(); 返回 ResultSet 中的列数。     getColumnName(int); 返回列序号为 int 的列名。     getColumnLabel(int); 返回此列暗含的标签。     isCurrency(int); 如果此列包含带有货币单位的一个数字,则返回 true。     isReadOnly(int); 如果此列为只读,则返回 true。     isAutoIncrement(int); 如果此列自动递增,则返回 true。这类列通常为键,而且始终是只读的。     getColumnType(int); 返回此列的 SQL 数据类型。
0 0