一.连接池(数据源)
1.直接使用DriverManager的问题
它没有管理连接上限,并发量大时很容易导致数据库崩溃
每次调用它,它都创建新连接,而不是复用连接,效率低
2.连接池可以解决上述问题
它能管理连接上限,避免数据库崩溃
它可以让我们复用连接,提高效率
3.连接池的工作场景
创建连接池对象时,它会自动连接数据库,并创建一批(配)连接(空闲)当调用连接池方法时,它会返回一个连接,并将此连接标记为占用态;
当使用完连接后,需将连接归还给连接池,它会将连接数据清空,标记为空闲态
当连接池发现空闲连接即将用尽(配)时,它会再次自动创建一批(配)新连接
当占用连接已达数据库上限(配)时,连接池会让调用者等待
当高峰期过后,连接池会自动关闭一批(配)连接
4.有哪些常用连接池?
DBCP
C3P0
5.要点
连接池由sun设计出接口DataSource
由厂商提供实现类(DBCP提供的实现类是BasicDataSource)
二.Statement和PreparedStatement
1.它们的联系
它们都能够执行SQL
PreparedStatement extendsStatement
2.它们的区别(面试题)
Statement适合执行静态(无条件)SQL
PreparedStatement适合执行动态(有条件)SQL
3.Statement运行原理
4.PreparedStatement运行原理
5.使用PreparedStatement可以避免注入攻击
三.ResultSet
1.结果集的指针
2.ResultSetMetaData
结果集元数据:对结果集进行描述(概括)的数据
包含:多少列,列名,列的类型
3.可跳动结果集
几乎不用
JDBC支持如下的日期类型
java.sql.Date年月日
java.sql.Time时分秒
java.sql.Timestamp完整日期
上述日期都是java.util.Date的子类
代码示例:利用连接池获取连接的封装
DBUtil工具其中db.properties文件内容如下:
db.properties配置文件测试代码:
测试连接及删除示例 查询示例 插入数据示例 查询核对账号密码示例 查看ResultSet概括信息示例实现转账功能:
假设当前用户已经登录了网银,他已经输入了收款方的账号,和要转出的金额.他点击了转账按钮,服务器接收了相关的数据,开始进行转账.
转账的步骤:
1.查询付款方余额够不够
2.查询收款方账号,看对不对
3.修改付款方的余额,-N元
4.修改收款方的余额,+N元
网友评论