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

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

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

2.连接池的作用

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

3.常用连接池

DBCP
C3P0

4.工作场景

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

5.如何使用连接池

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

图示:
JDBC连接池,Statement,PerparedStatement区别,ResultSet_第1张图片

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

二.Statement和PreparedStatement(面试题)

1.它们的联系

都是用来执行SQL的
PreparedStatement extends Statement

2.它们的区别

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

3.Statement工作过程
JDBC连接池,Statement,PerparedStatement区别,ResultSet_第2张图片

4.PreparedStatement工作过程
JDBC连接池,Statement,PerparedStatement区别,ResultSet_第3张图片

5.PreparedStatement可以避免注入攻击

JDBC连接池,Statement,PerparedStatement区别,ResultSet_第4张图片

三.结果集(ResultSet)
1.ResultSet

JDBC连接池,Statement,PerparedStatement区别,ResultSet_第5张图片

获取参数的方法,参考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 数据类型。

你可能感兴趣的:(数据库)