您的位置:首页 > 数据库

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

2017-04-10 23:25 405 查看
一.连接池(数据源)

1.DriverManager的问题

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


2.连接池的作用

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


3.常用连接池

DBCP
C3P0


4.工作场景

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


5.如何使用连接池

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


图示:



1.设置工具类(DBUtil)加载配置文件(配置连接池的相关参数),使用静态块加载资源。

2.静态块加载资源后,创建连接池对象。

3.工具类中建立获取连接对象方法供使用者调用

4.使用者调用方法获取连接对象

二.Statement和PreparedStatement(面试题)

1.它们的联系

都是用来执行SQL的
PreparedStatement extends Statement


2.它们的区别

Statement适合执行静态(无条件)SQL
PreparedStatement适合执行动态(有条件)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 数据类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 jdbc