JDBC连接池,Statement,PerparedStatement区别,ResultSet
2017-04-10 23:25
405 查看
一.连接池(数据源)
1.DriverManager的问题
2.连接池的作用
3.常用连接池
4.工作场景
5.如何使用连接池
图示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201704/1a1f6b11ee01d1d37ccf6b85f9e65bd5)
1.设置工具类(DBUtil)加载配置文件(配置连接池的相关参数),使用静态块加载资源。
2.静态块加载资源后,创建连接池对象。
3.工具类中建立获取连接对象方法供使用者调用
4.使用者调用方法获取连接对象
二.Statement和PreparedStatement(面试题)
1.它们的联系
2.它们的区别
3.Statement工作过程
![](https://oscdn.geek-share.com/Uploads/Images/Content/201704/622ec79acb8d119cf64028187f24fbcd)
4.PreparedStatement工作过程
![](https://oscdn.geek-share.com/Uploads/Images/Content/201704/103a4cb234a70b71d23d2a0e57e8c8d4)
5.PreparedStatement可以避免注入攻击
![](https://oscdn.geek-share.com/Uploads/Images/Content/201704/91eccdc5d20148aa1cede9e08ee66438)
三.结果集(ResultSet)
1.ResultSet
![](https://oscdn.geek-share.com/Uploads/Images/Content/201704/52f0310dc044ee764c78ed88f2dfbc75)
获取参数的方法,参考API
2.ResultSetMetaData(结果集元数据)
个别方法:
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的连接池与数据源的区别及性能
- JDBC中Connection、Statement、ResultSet的关闭方法
- JDBC数据库连接池connection关闭后Statement和ResultSet未关闭的问题
- JDBC中Statement和PrepareStatement的区别及特性
- JDBC主要接口DirverManager、Connection、Statement、PreparedStatement、ResultSet的简介
- JDBC的连接池与数据源的区别及性能
- (三)JDBC之使用Statement,PreparedStatement,ResultSet
- JDBC中Statement和PrepareStatement的区别及特性
- JDBC中Connection,Statement,ResultSet的关系
- JDBC--Statement,PreparedStatement,CallableStatement的区别
- JDBC中PrepareStatement与Statement的区别
- JDBC--Statement,PreparedStatement,CallableStatement的区别
- 转个:JDBC中,如果ResultSet 和 Statement 不关闭的话,会有什么影响
- jdbc preparedStatement和statement,resultset等区分
- JDBC的Statement 和 ResultSet
- 数据库JDBC查询,PreparedStatement与Statement的区别
- JDBC--Statement,PreparedStatement,CallableStatement的区别
- JDBC 笔记4 PreparedStatement 与Statement 的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC之Statement,PreparedStatement,CallableStatement的区别