# 练习
## 需求
通过键盘录入用户名和密码
判断用户是否登陆成功
## 步骤
创建数据库表
创建一个类,
### PreparedStatement:执行sql的对象
1.SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接,会造成安全性问题
输入用户随便,输入密码:a ' or 'a' = 'a
解决SQL注入问题 :使用PreparedStatement 对象来解决
## 注意:后期都会使用PreparedStatement来完成增删改查的所有操作
可以防止SQL注入
效率更高
## JDBC控制事物
1.事物:一个包含多个步骤的业务操作。入宫这个业务操作被事物管理,则这多个步骤要么同时成功,要么同时失败
2.操作:
1.开启事务
2.提交事务
3.回滚事物
3.使用Connection对象来管理事务
1.开启事务:setAutoCommit:调用该方法设置参数为false,,即开启事务
在执行sql之前开启事物
2.提交事务:commit()
当所有sql都执行完提交事务
3.回滚事物:rollback()
在catch中回滚事物
# 今日内容
## 数据库连接池
### 概念:其实就是一个容器(集合),存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会连接对象归还给容器。
### 好处
1.节约资源
2.用户访问高效
### 实现
1.标准的接口 :Datesource java.sql包
1.方法:
获取连接: getConnection()
归还连接:如果连接对象Connection是从连接池获取的,那么调用Connection.close
()方法,则不会关闭连接,二十归还连接
2.一般我们不去实现他,右驱动数据库厂商来实现
C3P0:数据库连接池技术
Druid:德鲁伊 : 数据库连接池技术数,由阿里巴巴提供
###C3P0
1.步骤
1.导入jar包 两个
2.定义配置文件
名称: c3p0.properties 或者 c3p0-config.xml
路径:直接将文件放在src目录下即可。
3.创建核心对象:数据库连接池对象 ComboPooledDataSource
4.获取连接:get Connection
### Druid
#### 步骤
1.导入jar 包:druid-1.0.9
2.定义配置文件
是properties形式的
可以叫任意名称,可以放在任意目录下
3.加载配置文件 Propreties。
3.获取数据库连接池对象:通过工厂来获取: DruidDataSoureFactory
4.获取连接池:getConnection()
#### 定义工具类
1.定义一个类
2.提供静态代码块加载配置文件,初始化连接池对象
3.提供方法
获取了连接方法:通过数据库连接池获取连接
释放资源
## Spring JDBC : JDBC Template
Spring提供的JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC开发
### 步骤:
1.导入jar包
2.创建jdbctemplate对象,依赖于数据源DateSource
JdbcTemplate template = new JdbcTemlate(ds);
3.调用方法来完成CRUD的操作
update(); 执行DML语句,,增删改语句
queryForMap();查询结果将结果集封装为map集合
queryForList();查询结果将结果封装为list集合
query();查询结果,将结果封装为JavaBean对象
queryForObject:查询结果,将结果封装为对象
4.练习
需求
1.修改1号数据salary为1w
2.添加一条记录
3.删除刚才添加的记录
4.查询所有的记录将其封装为map集合
5.查询所有记录,将其封装为list集合
6.查询所有记录,将其封装为emp对象的list集合
7.查询总记录数